Отделить сущность от модели или сохранить их как один класс (SpotORM) - PullRequest
0 голосов
/ 31 октября 2018

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

Как обычно это сделать?

...