Отделить сущность от модели или сохранить их как один класс (SpotORM)

Я постепенно включаю в свой проект ORM (с SpotORM) и внедрение зависимостей (с PHP-DI), и я хочу сделать это правильно. Прямо сейчас я не могу понять, должны ли Entity и Model быть двумя разными классами или только одним.

Класс 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 не знает об этом, и, например, если я получаю список сущностей Person из сущности организации, через отношение, я не У меня есть дополнительные методы.

Как обычно поступить по этому поводу?

0 ответов

Другие вопросы по тегам