я этого и не делал я описывал связи между таблицами те я инжектил в mapper relation и в relation mapper. там в примере я влепил relations через конструктор, но по идеи это отдельный метод, иначе от рекурсии не избавишься
Кажется понял - логично. Смутило new One2One(..., $posts) именно внутри конструктора;
Может как-нибудь в конструктор уже что-то готовое передавать, например через фабрику?
Например:
PHP:
class UserMapper{
protected $relstions = [];
public function __construct($relstions){
$this->relations = $relstions
}
}
// использование:
$user_relations = [
'post' => new One2One(PostMapper);
'roles' => new One2Many(RolesMapper);
]
$user = new UserMapper($user_relations);
Чтобы relations создавались например через константы других, связанных мапперов.
Не уверен, что это у меня именно фабрика в создании массива $user_relations.
Очень много изучил готовых продуктов и всевозможных примеров, в итоге очень понравился Eloquent из Laravel. И по быстродействию хорош, и проще Доктрины, но это уже получается не маппер, а актив рекорд. Т.е. Я могу и новый объект создать и загрузить и уничтожить готовый, все понятно и удобно.
Но один момент я не понял. В той же документации к нему, есть информация про репозитории.
А зачем они нужны, если я могу все делать через сам объект сущности?
Предполагаю, что для создания методов, хорошо понятных в контексте.
Разделение отвественности? Наверное нет ... ведь репозиторий будет жестко связан в АР объектом.
Или предполагается, что можно создать другой репозиторий с такими же методами, но другой логикой?