PHP反射不适用于子类

时间:2015-12-17 16:18:26

标签: php pdo

对不起,我可能要为你们展示很多代码来理解我的问题。

所以,我在PHP中创建了一个穷人的ORM,我有一个处理连接和构建查询的静态类SQLQuery,以及一个使用BaseModel的{​​{1}}类}类。所有自定义模型都继承自SQLQuery

我的问题是,我尝试使用反射从调用子类中获取属性,但它不返回这些属性,即使它返回类中的方法。以下是我的代码。

BaseModel

我创建了一个新的课程namespace BB8\Potatoes\ORM\System; use BB8\Potatoes\ORM\System\StaticSQLQuery; class BaseModel { protected static $tableName; protected static $subClassName; public function __construct() { self::initializeQuery(); } public static function initializeQuery() { if (static::$tableName == null) { static::$tableName = end(explode("\\", get_called_class())); } static::$subClassName = get_called_class(); static::$tableName = strtolower(static::$tableName); StaticSQLQuery::init(static::$tableName, static::$subClassName); } public static function find($id) { static::initializeQuery(); return StaticSQLQuery::selectWhere(array("id"=>$id)); } public function test() { $rc = new \ReflectionClass(get_called_class()); return $rc->getproperties(); } } ,如下所示:

Users

来自namespace BB8\Potatoes\ORM\Models; use BB8\Potatoes\ORM\System\BaseModel; class User extends BaseModel { protected static $tableName = "Users"; public function getName() { return "This is the name function for this"; } } 我试试

$ user = User :: find(1); 它使用index.php

返回User类

当我转储时:$STH->setfetchmode(PDO::FETCH_CLASS, 'Users')我得到了

var_dump($user);

问题出在我运行时

object(BB8\Potatoes\ORM\Models\User)[5]
  public 'id' => string '1' (length=1)
  public 'full_name' => string 'George James Okpe' (length=17)
  public 'description' => string 'There is no knowledge that is not power' (length=39)
  public 'token' => string '196' (length=4)

它只返回$user->test(); 中的属性,我很沮丧,不知道该怎么做。

PS:我知道有更好的方法来解决这个问题,但由于所有的压力,我的大脑现在无法正常工作。

请伙计们,我需要你的帮助

0 个答案:

没有答案