我正在尝试创建自动机制,该机制将使用抽象类将数据从数据库加载到对象中,该抽象类将在必要时进行扩展。
这是我的简化想法,目前不起作用,所以如果有人能解释我为什么以及我做错了什么:
抽象类:
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
所以这只是简单的版本,应该有更多的验证,getter setter 接口....
现在只想知道这里出了什么问题以及为什么,是否可以在不调用 parent::__constructor() 的情况下使用此流程,据我所知,在这种情况下类应该扩展抽象 __constructor,或者我错了?