对不起,我可能要为你们展示很多代码来理解我的问题。
所以,我在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
当我转储时:$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();
中的属性,我很沮丧,不知道该怎么做。
请伙计们,我需要你的帮助