必要に応じて拡張される抽象クラスを使用して、データベースからオブジェクトにデータをロードする自動メカニズムを作成しようとしています。
これが私の単純化されたアイデアであり、現時点では機能していません。誰かがなぜ私が間違っていたのかを説明できれば:
抽象クラス:
abstract class abstractRecord{
public $data = array();
public function __constructor($id = null){
global $db; // eg. PDO
$this->db = $db;
if(!is_null($id) && intval($id) > 0)
$this->fillData($id);
}
public function fillData($id){
$this->data = $db->getAll("SELECT * FROM ".self::$table." WHERE ".self::$id."='$id'");
}
}
abstratRecord を拡張し、有効な ID が提供された場合、データを埋めるために開始時に抽象のコンストラクターを使用する必要があるいくつかのクラス
class User extends abstractRecord{
public static $id = "`id`";
public static $table = "`users`";
// some other functions for controlling user...
}
そして最後の使い方
$user = new User(15); // so user data from db with id=15 should be loaded into object data property by abstractRecord class
したがって、これは単純なバージョンであり、より多くの検証、ゲッター セッター インターフェイスが必要です ....
今のところ、ここで何が間違っているのか、その理由を知りたいだけです。この場合、クラスが抽象 __constructor を拡張する必要があることを知っている限り、parent::__constructor() を呼び出さずにこのフローを使用することは可能ですか? ?