Ben temelde veritabanı satır arayüzleri birkaç sınıfları var. Sınıf bir satır zaten (__construct
bir alan değer bekliyor) bulunduğunu varsayar yana, sıranın oluşturulması sağlar ve sınıfının bir örneğini döndürür public static fonksiyonu var.
İşte sözde kod (yani bu hatalar ve eksik gelişmeler vardır) örnek:
class fruit {
public $id;
public function __construct( $id ) {
if ( ! is_numeric($id) ) {
throw new Exception("Id is not numeric.");
}
$this->id = $id;
$sql = "SELECT * FROM Fruits WHERE id = $id";
...
$this->arrFieldValues[$field] = $row[$value];
}
public function __get( $var ) {
return $this->arrFieldValues[$var];
}
public function __set( $var, $val ) {
$sql = "UPDATE fruits SET $var = " . mysql_real_escape_string($val) . " WHERE id = $this->id";
}
public static function create( $fruit ) {
$sql = "INSERT INTO Fruits ( fruit_name ) VALUE ( '" mysql_real_escape_string($fruit) . "' )";
$id = mysql_insert_id();
$fruit = & new fruit($id);
return $fruit;
}
}
$obj1 = fruit::create( "apple" );
$obj2 = & new fruit( 12 );
What is this pattern called?
Düzenleme: Ben daha çok veritabanı arayüzü işlevleri vardır birine örnek değiştirdi. Çoğu zaman için, bu tür bir sınıf __construct()
ile, normal olarak örneği olacaktır. Önce yeni bir satır oluşturmak için gerektiğinde Ama bazen, create()
çağırır.