Найдено 3120 результатов

slavcodev
2016.07.29, 02:22
Форум: Архитектура, дизайн, ООП
Тема: Сервисы и репозитории. Слоистая архитектура. Примеры.
Ответы: 92
Просмотры: 28437

Re: Сервисы и репозитории. Слоистая архитектура. Примеры.

Тот же разработчик может использовать все что угодно не там где нужно, например мапперы в сервисах или в контролере.
Проблема выдуманная.
slavcodev
2016.07.28, 21:08
Форум: Архитектура, дизайн, ООП
Тема: Сервисы и репозитории. Слоистая архитектура. Примеры.
Ответы: 92
Просмотры: 28437

Re: Сервисы и репозитории. Слоистая архитектура. Примеры.

Научится разделять доменную логику от персистной, научится применять интерфейсы.
И тогда не будет проблем с AR. AR это всего лишь один из подходов ОРМ.
slavcodev
2016.07.28, 18:01
Форум: Архитектура, дизайн, ООП
Тема: Сервисы и репозитории. Слоистая архитектура. Примеры.
Ответы: 92
Просмотры: 28437

Re: Сервисы и репозитории. Слоистая архитектура. Примеры.

Вот ведь парадокс, паттерн введенный Мартином Фаулером в книге "Patterns of Enterprise Application Architecture",
но почему-то пугающий других разработчиков, постоянно называющих его "анти-паттерном".

Может вы просто "не умеете их готовить"?
slavcodev
2016.07.26, 00:55
Форум: Архитектура, дизайн, ООП
Тема: Сервисный слой, как правильно?
Ответы: 208
Просмотры: 51866

Re: Сервисный слой, как правильно?

Я правильно понимаю, что просто начать с малого и внедрить сервисный слой в Й2 не получится? "Сервисный слой" как раз не проблема вообще, проблема в правильно проектировании модели. Рецепт "Сервисный слой" 1. Создаем по классы на один use case ( Варианты использования ): [*] Регистрация пользовател...
slavcodev
2016.07.25, 21:53
Форум: Архитектура, дизайн, ООП
Тема: Сервисы и репозитории. Слоистая архитектура. Примеры.
Ответы: 92
Просмотры: 28437

Re: Сервисы и репозитории. Слоистая архитектура. Примеры.

Позвольте добавить немного своих мыслей, своими словами. Слоистая архитектура - архитектура приложения разбитая на разные слои, с разделением отвественности. Графически такую архитектуру представляют перевернутой пирамидой, так удобно отделить ответственность сверху вниз, где каждый слой обладает ин...
slavcodev
2016.07.25, 14:38
Форум: Архитектура, дизайн, ООП
Тема: Сервисы и репозитории. Слоистая архитектура. Примеры.
Ответы: 92
Просмотры: 28437

Re: Сервисы и репозитории. Слоистая архитектура. Примеры.

magicoder, модель с одним свойством title, лучше делать с ActiveRecord и обычным CRUD. Все: работодатель, ревьювер, кодер который будет это поддерживать после тебя, все скажут только спасибо!
slavcodev
2016.07.25, 14:31
Форум: Архитектура, дизайн, ООП
Тема: Сервисный слой, как правильно?
Ответы: 208
Просмотры: 51866

Re: Сервисный слой, как правильно?

но не могут менять приватные свойства инстанциированного объекта. Свойства объекта должны меняться через поведения, интерфейс объекта. Как симбиоз статики и конструктора сейчас додумался до такого варианта: class User {     private $id;     private $email;     private $status;     private $role;   ...
slavcodev
2016.07.25, 14:26
Форум: Архитектура, дизайн, ООП
Тема: Сервисный слой, как правильно?
Ответы: 208
Просмотры: 51866

Re: Сервисный слой, как правильно?

class UserRepository {   function save(User $user)   {     // сохраняем пользователя в базу данных (имплементация упущена)     // после чего обрабатываем события произошедшие с ним,     // отсылаем емитеру чтоб оповестил подписчиков из других контектов     foreach ($user->flushEvents() as $event) {...
slavcodev
2016.07.23, 11:02
Форум: Обо всем
Тема: Можно ли сделать существующий репозиторий форком другого
Ответы: 6
Просмотры: 1964

Re: Можно ли сделать существующий репозиторий форком другого

Я запутался читая первый пост, основной, не основной, другой, тот-же. :)
Попытаюсь угадать и ответить на вопрос.

Делаешь форк репозитория основного модуля. Добавляешь туда изменения сделанные, комитишь в свой форк. Предлагаешь PR (по желанию).
slavcodev
2016.07.21, 13:33
Форум: Архитектура, дизайн, ООП
Тема: Сервисный слой, как правильно?
Ответы: 208
Просмотры: 51866

Re: Сервисный слой, как правильно?

final class Time {     private $hours, $minutes;     // We don't remove the empty constructor because it still needs to be private     private function __construct(){}      public static function fromValues($hours, $minutes)     {         $time = new Time;         $time->hours = $hours;         $ti...
slavcodev
2016.07.21, 11:03
Форум: Архитектура, дизайн, ООП
Тема: Сервисный слой, как правильно?
Ответы: 208
Просмотры: 51866

Re: Сервисный слой, как правильно?

ElisDN писал(а):Ваш подход можно и со статическими конструкторами совместить
Возможно конечно, но я предпочитаю так не делать.
Причину написал выше, лично я считаю это обходом инкапсуляции через установку значений приватным свойствам не через конструктор или поведения сущности.
slavcodev
2016.07.21, 10:21
Форум: Архитектура, дизайн, ООП
Тема: Сервисный слой, как правильно?
Ответы: 208
Просмотры: 51866

Re: Сервисный слой, как правильно?

статических фабричных метода (так называемые именованные конструкторы (с) Верраес) Я сразу понял про что ты , я сам читаю статьи Mathias. Но к этому подходу отношусь неуверенно. Я считаю что оно нарушает принципы ООП, а именно инкпасуляцию, из-за того что устанавливаются приватные свойства. До того...
slavcodev
2016.07.21, 03:11
Форум: Архитектура, дизайн, ООП
Тема: Сервисный слой, как правильно?
Ответы: 208
Просмотры: 51866

Re: Сервисный слой, как правильно?

а как надо изменить объект, чтобы зарегистрировать юзера? Это доменный эксперт может рассказать. Предполагаю что нужно ввести: имя и другие поля, установить в модели время регистрации, бросить события нужные. фабрики используются для создания объекта (я кстати указал варианты использования фабрик -...
slavcodev
2016.07.20, 23:59
Форум: Архитектура, дизайн, ООП
Тема: Сервисный слой, как правильно?
Ответы: 208
Просмотры: 51866

Re: Сервисный слой, как правильно?

а что тут как не создание модели? начнем с того, что в UL нет понятия "создание класса User". Есть "регистрация юзера", "генерация тестового юзера", "создание юзера через апи" Вот и я про это. Регистрация пользователя - это процесс изменения модели User в нужное состояние. Фабрики используются для ...
slavcodev
2016.07.20, 18:52
Форум: Архитектура, дизайн, ООП
Тема: Сервисный слой, как правильно?
Ответы: 208
Просмотры: 51866

Re: Сервисный слой, как правильно?

во-первых, перекладываем ответственность за создание модели на фабрику Разве тут вообще создание модели? Или изменение ее состояния? Какова ответственность сервиса "UserServiceInterface" или хендлера? Как решить что пора остановится и количество слоев уже достаточно? во-вторых, убираем несоответств...
slavcodev
2016.07.20, 17:05
Форум: Архитектура, дизайн, ООП
Тема: Сервисный слой, как правильно?
Ответы: 208
Просмотры: 51866

Re: Сервисный слой, как правильно?

zelenin писал(а):лучше так
Чем лучше?
slavcodev
2016.07.14, 11:12
Форум: Общие вопросы (Yii 2.x)
Тема: Как сделать такую маршрутизацию?
Ответы: 10
Просмотры: 1409

Re: Как сделать такую маршрутизацию?

Привет! Мне нужно подстроиться под старые адреса сайта на новом "движке". Если список старых адресов не длинный, и старые и новые адреса все известны, лучше настроить переадресацию сразу на веб-сервере. Если же это не подходит, нужно старые адреса посылать на спец. контроллер, который найдет новую ...
slavcodev
2016.07.13, 15:22
Форум: Архитектура, дизайн, ООП
Тема: Правильно ли я делаю?
Ответы: 9
Просмотры: 2897

Re: Правильно ли я делаю?

То, что завалит слабо относящейся к модели функциональностью. В модели - такое же не лучшее, как и в контроллере. Мы же ActiveRecord обсуждаем? Можно ли считать что работа с коллекцией записей это часть модели? Повторюсь, можно это вынести и в отдельный класс (Search-класс), что является чем-то пох...
slavcodev
2016.07.13, 14:50
Форум: Архитектура, дизайн, ООП
Тема: Правильно ли я делаю?
Ответы: 9
Просмотры: 2897

Re: Правильно ли я делаю?

Так всю модель провайдерами завалит. И что? Тем более что по задаче не видно сколько там провайдеров нужно. Для CRUD провайдер формируется в Search-классе. Логично остальные провайдеры вынести в свои аналогичные классы для выборок с методами getAllDataProvider и подобными. Мой ответ был, что в конт...