我目前在CodeIgniter内工作,我正在努力了解如何在编程中正确使用贫血或富实体类。
我希望创建一个具有吸气剂/阻气剂的贫血实体,但我想知道这一切如何工作。
例如:
在第一次创建对象的实例时,我可以使用该对象设置和获取信息,但是从数据库中检索信息时,如何将信息返回到对象中,以便可以使用对象方法?
我听说过使用Doctrine将对象映射到关系数据库,但是我已经创建了要使用的数据库架构,并且不确定是否可以将Doctrine映射到现有数据库。
我已经考虑过尝试:
__construct
函数设置所有对象属性
使用我从SQL查询中获得的数组,这似乎是不正确的。但是我的问题是: 是否有一种普遍接受的做法?(除教义以外)
答案 0 :(得分:1)
我建议使用Doctrine或其他ORM工具,但是如果您要DIY,这是使用反射的一个小例子。
<?php
class Foo {
private $id;
private $name;
public function getId(){ return $this->id; }
public function getName(){ return $this->name; }
public function setName($name){ return $this->name = $name; }
}
$dataFromDb = [
[
'id' => 1,
'name' => 'John'
]
];
foreach ($dataFromDb as $row) {
$foo = new Foo();
$ref = new ReflectionClass('Foo');
foreach ($row as $propName => $propValue) {
$prop = $ref->getProperty($propName);
$prop->setAccessible(true);
$prop->setValue($foo, $propValue);
}
var_dump($foo);
}