0

我正在尝试创建自动机制,该机制将使用抽象类将数据从数据库加载到对象中,该抽象类将在必要时进行扩展。

这是我的简化想法,目前不起作用,所以如果有人能解释我为什么以及我做错了什么:

抽象类:

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,或者我错了?

4

2 回答 2

2

您的抽象类的构造方法拼写错误。需要__construct()。然后您需要在扩展类中调用该构造函数,如下所示:

class User extends abstractRecord{
    public function __construct() {
        // call to abstractRecore construct
        parent::__construct();
    }
}
于 2013-02-19T21:02:24.817 回答
0

好的,我设法解决了问题并建立了工作机制,所以它看起来像这样:

抽象类 abstractRecord{

protected $data = array();
public static $table;
public static $pK;

public function __construct($id = null, $table = false, $pK = false){

if($table == false || $pK == false)
    return false;

self::$table = $table;
self::$pK = $pK;

if (!is_null($id) && intval($id) > 0)
        $this->fillData($id);

}

protected function fillData($id){
    global $db; // db solution

    $this->data = $db->("SELECT * FROM ".self::$table." WHERE ".self::$pK."='$id' LIMIT 1");

}

// some other useful functions

}

一些类

类用户扩展 abstractRecord{

public static $table =  " `users` ";
public static $pK = " `userID` ";

public function __construct($id = null){

    parent::__construct($id, self::$table, self::$pK);
}

// some other functions ...

}

对不起,如果有什么拼写错误...

感谢您的帮助!

于 2013-02-20T00:35:30.963 回答