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