将实体与模型分开或将它们保持为一个类(SpotORM)

时间:2018-10-31 13:13:37

标签: php oop dependency-injection php-di

我正在将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$person->get("firstname")访问$person->getFirstname()

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

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

所以我认为我需要一个单独的类来将我的方法放入其中,但是ORM对此一无所知,例如,如果我通过关系从Organization实体中获得Person实体的列表,我没有其他方法。

通常的解决方法是什么?

0 个答案:

没有答案