ElisDN писал(а): ↑2019.10.02, 23:11
Переименование методов было в пункте "во-первых". А к "во-вторых" @anton_z мой намёк понял и даже вам код с полусокрытием привёл:
Код: Выделить всё
$comment = new Comment();
$post->addComment($comment);
$posts->update($post);
А у вас пока воз и ныне там и снова ни о чём:
Ни первый ваш вариант, ни второй не поворачивается язык назвать. И там, и там нарушение за счёт прямого получения коллекции. Полусокрытие будет только в варианте с прятаньем коллекции внутри:
Код: Выделить всё
interface CommentableInterface {
public function getComments(): array;
public function addComment(Comment $comment): void;
}
Мыши плакали, кололись, но всё-равно продолжали есть кактус
Возврат массива вместо объекта-итератора - думаю нам с Вами дальше не о чем говорить дальше. Говорим про ООП, а работаем с массивами - это нонсенс
Вы бы сначала удосужились понять то, что CommentCollection не в коем случае не является ни репозиторием, ни ДМ. Если для Вас итераторы являются чем-то страшным, то видимо ещё не доросли до них. Если Вы не в курсе, по сути своей массив в PHP и является своего рода итератором, но его гораздо удобнее, в данном случае его представить в виде объекта. Хотя чего я Вам объясняю) Человек в 2019 возвращает массивы, говоря о DDD, смешно. Текст книг читаем, а вот кроме текста в них ничего не видим.
ElisDN писал(а): ↑2019.10.02, 23:11
Так что мы со своими разговорами о том, что кто-то не "осилил" инкапсуляцию, до сих пор уместны.
Я вижу, как они уместны
Будем городить прокси классы для ленивой подгрузки связей, делая невозможным использование final'изированных классов сущностей, отстаивая при этом то, что есть единственно-верный путь для реализации хорошего кода XD А тех, кто не придерживается подобного "чудо" подхода - будем упрекать в том, что не осилили инкапсуляцию XD
А вообще очень странно видеть, как сообщество Yii (да и PHP в целом) деградирует от коммерсов, которые с г**ном тебя съедят, потому что ты им указал на то, что они несут бред. Аргументов, кроме как
ElisDN писал(а): ↑2019.10.02, 23:11
кто-то не "осилил" инкапсуляцию
больше то и нет. Видно, что человек всю жизнь только и работал с массивами, начитался умных книжек и ушёл в коммерцию, рассказывая про волшебство того или иного подхода. А те смотрят идеально подобранные решения некоторых проблем и уши развешивают. А на практике, простите, об**раются, потому что показанные подходы перестают работать в отличном от показанного случая. А бывает и запилят архитектуру. Глядя на которую за голову берёшься. Прокси и т.п. дребедень, которая еле работает, множество бестолковых объектов, но зато заюзали побольше паттернов, адаптеров нафигачили, посредников, декораторов, но там, где оно не нужно 300 лет.
Просто, Дмитрий, запомните, что существует теория и существует практика. Вы теоретик, я это уже для себя уяснил. Но прошу, не пытайтесь тут мне сейчас свою теорию втереть за "чистую монету". Любые правила можно и в некоторых случаях нужно нарушать, если того требует проект и от этого будет больше плюсов, чем минусов. А Вы нам тут рассказываете про идеальную архитектуру, которой не существует.