php - 将实体与模型分开或将它们保留为一个类 (SpotORM)
问题描述
我正在逐步在我的项目中加入 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 不知道它,例如,如果我通过关系从组织实体获取人员实体列表,我不知道没有我的其他方法。
解决这个问题的通常方法是什么?
解决方案
推荐阅读
- java - 使用 mapstruct 的值对象的通用映射
- python - 针对缓慢加载时间的 pyTables / HDF5 性能优化
- python - Python用“单词”替换单词
- primefaces - 将 Google 字体添加到 Primefaces 文本编辑器
- javascript - 以编程方式设置角度材料日期选择器值
- amazon-s3 - AWS S3 存储桶作为内部网站,用于提供来自 CI 的自动更新的文档
- python - Windows 10 上的 Python 3.8 路径
- cassandra - 有什么方法可以找出 Cassandra 中的 SELECT 语句使用了哪个节点?
- python-3.x - 如何在python中创建动态文件夹?
- angularjs - 在两个 Angular 应用程序之间传递数据