我试图将域模型持久保存到数据库而不使用ORM只是为了好玩。
很容易保留属性,但我很难坚持收藏。
我们说我有以下两个对象。
class aModel
{
private $items = [];
public function __construct($id, $name, array $items = [])
{
$this->id = $id;
$this->name = $name;
$this->items = $items;
}
public function getId()
{
return $this->id;
}
public function getName()
{
return $this->name;
}
public function addItem(Item $item)
{
$this->items[] = $item;
}
}
class aDBRepository
{
public function persist(aModel $aModel)
{
$attributes = [
'id' => $aModel->getId(),
'name' => $aModel->getName()
];
$this->table->insert($attributes);
}
}
//代码
$aModel = new aModel("test id", "a name");
$aModel->addItem(new Item("id", "name"));
当我创建新的 aModel 并向其添加新项目时,如何检测未保存的'物品并坚持下去?
我只能考虑在项类中添加 isSaved 方法,并在aModel中循环 $ items 变量。
不使用反射,最好的方法是什么?