我试图将mysql数据库中的结果提取到具有表示每列属性的实体类中。这适用于第一级类,但如果我尝试将结果加载到此类的扩展中,我将获得双重属性。
<?php
class Entity
{
private $id;
}
class EntityExtended extends Entity
{}
$pdo = new \PDO(/* instance thingy */);
$stmt = $pdo->prepare("SELECT id FROM entity");
$stmt->execute();
$entity = $stmt->fetchAll(\PDO::FETCH_CLASS, "Entity"); // Works
$entity = $stmt->fetchAll(\PDO::FETCH_CLASS, "EntityExtended"); // 2 sets of properties, public $id and private $id
在获取结果后,将第一个$实体转储到object(){private id}
,第二个结果生成object(){private $id, public $id}
。
有没有办法防止这种情况发生,或者是获取结果时制作自定义类加载器的唯一方法?