Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/topic.php on line 737
Форумы портала PHP.SU :: Domain-driven design

 PHP.SU

Программирование на PHP, MySQL и другие веб-технологии
PHP.SU Портал     На главную страницу форума Главная     Помощь Помощь     Поиск Поиск     Поиск Яндекс Поиск Яндекс     Вакансии  Пользователи Пользователи


 Страниц (1): [1]   

> Без описания
psevdo
Отправлено: 24 Октября, 2017 - 14:08:05
Post Id



Гость


Покинул форум
Сообщений всего: 101
Дата рег-ции: Сент. 2010  


Помог: 0 раз(а)




Всем здравствуйте. Прочитал тут одну статью http://www[dot]elisdn[dot]ru/blog/104/do[dot][dot][dot]tities-modelling . Если я все правильно понял, то тут нужно описывать сущность другими сущностями. Вот например пользователь. У него есть идентификатор, юзернейм, пароль и статус. Нужно ли каждое из этих свойств описывать отдельным классом? Или есть какие то пределы разумного?
Объясните мне пожалуйста.
 
 Top
LIME
Отправлено: 25 Октября, 2017 - 04:54:41
Post Id


Активный участник


Покинул форум
Сообщений всего: 10732
Дата рег-ции: Нояб. 2010  


Помог: 322 раз(а)




не сущностями, вернее не обязательно ими, а объектами-значениями
это сделает структуру более гибкой и прогнозируемой, но одновременно и усложнит
объекту в отличии от литерала можно добавить поведение
например при смене пароля сразу его хэшировать в методе объекта-значения а не в сущьности или контроллерах/сервисах
получаем всегда валидное значение вместо валидации потенциально кривой сущности
решать тебе
(Добавление)
вспомнил пример
надо было при выводе id заказа добавлять букву префиксом в зависимости от филиала
типа A100500
можно сделать это в гетере
тогда не получится $order->getId() === 100500
можно сделать разные гетеры типа getId(), getPrefixId()
но надо всегда об этом помнить, не сложно но как-то ...
а можно id сделать объектом и реализовать ему __toString
подмешали поведение значению
а если придется сделать несколько поведений то в сущьности измываться над литералом становится все сложнее
опять же можно менять структуру значения не меняя ничего кроме класса объекта-значения
сегодня это строка а завтра склеенный массив
(Добавление)
Любую проблему можно решить введением дополнительного уровня абстракции, кроме проблемы слишком большого количества уровней абстракции
https://developerslife[dot]ru/8729 ))
 
 Top
psevdo
Отправлено: 25 Октября, 2017 - 10:26:30
Post Id



Гость


Покинул форум
Сообщений всего: 101
Дата рег-ции: Сент. 2010  


Помог: 0 раз(а)






Думал по ссылке будет что-то полезное)
В итоге что получается... Возьмем для примера Id. Если мы знаем, что данное свойство объекта мы будем получать как оно есть, т.е. просто значение, то можно описывать его простым литералом. Но если будет какая-либо логика в дальнейшем, то описываем объектом-значением.
 
 Top
LIME
Отправлено: 25 Октября, 2017 - 10:47:04
Post Id


Активный участник


Покинул форум
Сообщений всего: 10732
Дата рег-ции: Нояб. 2010  


Помог: 322 раз(а)




может оказаться не так-то просто заменить литерал на объект
почему свойства сразу делают приватными и лепят гетеры?
однозначного универсального рецепта у меня нет

(Отредактировано автором: 25 Октября, 2017 - 10:57:23)

 
 Top
LIME
Отправлено: 26 Октября, 2017 - 09:00:25
Post Id


Активный участник


Покинул форум
Сообщений всего: 10732
Дата рег-ции: Нояб. 2010  


Помог: 322 раз(а)




и что-то полезное по ссылке https://www[dot]youtube[dot]com/watch?v=rjtbCyacJas
 
 Top
Страниц (1): [1]
Сейчас эту тему просматривают: 0 (гостей: 0, зарегистрированных: 0)
« Вопросы новичков »


Все гости форума могут просматривать этот раздел.
Только зарегистрированные пользователи могут создавать новые темы в этом разделе.
Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.
 



Powered by PHP  Powered By MySQL  Powered by Nginx  Valid CSS  RSS

 
Powered by ExBB FM 1.0 RC1. InvisionExBB