首页 > 解决方案 > 将实体与模型分开或将它们保留为一个类 (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],
        ];
    }
}

这使我可以访问firstnamewith $person->get("firstname")or $person->getFirstname()

我想创建一个getFullName()返回名字后跟姓氏的方法。我的第一个想法是把它写在这个实体类中,效果很好。

现在我想对 getSlug() 之类的方法使用依赖注入,使用来自库的 Slugifier。但是我不能在构造函数中注入它,因为它具有特定的签名并且仅由 SpotORM 调用。

所以我认为我需要有一个单独的类来放入我的方法,但是 ORM 不知道它,例如,如果我通过关系从组织实体获取人员实体列表,我不知道没有我的其他方法。

解决这个问题的通常方法是什么?

标签: phpoopdependency-injectionphp-di

解决方案


推荐阅读