явная связанность с фреймворком была заменена менее явной но более жесткой связанностью
В общем... Как понял из хейта, если я в Yii использую встроенный ActiveRecord, то я просто обязан везде лепить "как все":
if (!$user = User::findOne(['email' => $email])) {
throw new NotFoundException(...);
}
$user->status = User::STATUS_ACTIVE;
if (!$user->save()) {
throw new RuntimeException(...);
}
и мне нельзя в AR добавить ООП, подключить плагин для связей и инкапсулировать вызов поиска и сохранения в какой-нибудь объект Repository, чтоб всю лапшу сменить на код:
$user = $this->users->getByEmail($email);
$user->activate();
$this->users->save($user);
потому что это "не persistance ignorance и не framework agnostic" и "вдруг в проект придёт джун и обкакается". Да и вообще потому, что так никак нельзя делать в AR или чём то ещё и можно лишь в их православном DM. И готовы бить морду за то что "нет контекстов, значит код говно" :)
Если так, то, видимо, у многих DDD-анутых оппонентов отсутствует не-DM мозг.
Ну и не читают диагональщики разборов вроде http://www.elisdn.ru/blog/104/domain-entities-modelling про репозитории, где мы рисуем агрегаты и сохраняем их в DM, Doctrine и ActiveRecord. С коллекциями, прокси, феншуем и костылями.