我正在逐步在我的项目中加入 ORM(使用 SpotORM)和依赖注入(使用 PHP-DI),并且我想把它做对。现在我无法弄清楚实体和模型是否应该是两个不同的类,或者只是一个。
Entity 类如下所示:
<?php
namespace MyProject\Entity;
use Spot\Entity as Entity;
class Person extends Entity
{
protected static $table = "t_person";
public static function fields()
{
return [
"id" => ["type" => "integer", "primary" => true, "autoincrement" => true],
"firstname" => ["type" => "string", "length" => 50],
"lastname" => ["type" => "string", "length" => 50],
];
}
}
这使我可以访问firstname
with $person->get("firstname")
or $person->getFirstname()
。
我想创建一个getFullName()
返回名字后跟姓氏的方法。我的第一个想法是把它写在这个实体类中,效果很好。
现在我想对 getSlug() 之类的方法使用依赖注入,使用来自库的 Slugifier。但是我不能在构造函数中注入它,因为它具有特定的签名并且仅由 SpotORM 调用。
所以我认为我需要有一个单独的类来放入我的方法,但是 ORM 不知道它,例如,如果我通过关系从组织实体获取人员实体列表,我不知道没有我的其他方法。
解决这个问题的通常方法是什么?