В чем преимущества ValueObject и DTO? Посмотрел кучу материалов про этот паттерн везде обьясняют суть а вот зачем он я так и не пойму
ну допустим пусть сделаемclass DateRange {
function __counstruct( $from, $to ) {
. . .
}
function getValue($name) {
if($name != "from" and $name != "to" ) {
throw new \Exception("");
}
return $this->{$name};
}
ну параметр в функцию надо будет передавать не два а один. поведения то никакого нет
второй вопрос про DTO
тоже читал про него
и понял что мой код return $this->render($view,
array_map(function( $hit ) {
return $hit->getVersionInfo()->getContenInfo();
}, $searchResults);
в каком-то смысле я тоже редьюсю сложный обьект и передаю DTO во вьюшку верно?
вижу смысл ValueObject и DTO только если идет разработка расширяемого приложения чтоб гарантировать что разработчик передаст в нужную функцию обьект в котором доступен необходимое свойство
но вот внутри в тех частях логика которых фиксирована и не может меняться - вполне подходит массив ключ-значение
некоторое время назад я заметил что мои контроллеры часто возвращают массив с 3мя ключами content, searchResults, facets и даже думал дифинировать класс для такой структуры данных
но потом не стал - т.к. иногда нужен 4й ключ или даже 5й а если где-то не передан один из этих ключей - это сразу Exception и это правильно - система без них не может работать
и еще 3й вопрос
как реализовать на php типизированую коллекцию типа как в СИ
чтоб каждый элемента массива был одного определенного инстанса?
Всем Спасибо

21 Авг 2019 в 07:02
216 +1
1
Ответы
1

ValueObject - это объект, который представляет значение и обладает свойствами неизменяемости. Он обеспечивает безопасное сравнение значений и гарантирует их неподдачу изменениям.

Преимущества ValueObject:

Гарантия неизменности значения.Удобство использования в качестве ключа в коллекциях.Улучшение читаемости кода и предотвращение ошибок из-за неправильного сравнения значений.

DTO (Data Transfer Object) - объект, который используется для передачи данных между различными слоями приложения. Он содержит только данные и методы доступа к ним, не содержащие бизнес-логику.

Преимущества DTO:

Упрощение передачи данных между компонентами приложения.Улучшение производительности за счет уменьшения числа передаваемых параметров.Улучшение читаемости кода.

В вашем примере с классом DateRange, использование ValueObject может быть полезным, чтобы гарантировать неизменность значений from и to. Это упростит сравнение и передачу объекта DateRange между различными компонентами приложения.

Что касается типизированной коллекции в PHP, вы можете использовать PHPDoc-комментарии для указания типа элементов в массиве. Например:

/**
* @var MyClass[]
*/
$array = [];

Это поможет IDE и другим разработчикам понять, какие типы объектов ожидаются в коллекции.

20 Апр в 13:09
Не можешь разобраться в этой теме?
Обратись за помощью к экспертам
Название заказа не должно быть пустым
Введите email
Бесплатные доработки
Гарантированные бесплатные доработки
Быстрое выполнение
Быстрое выполнение от 2 часов
Проверка работы
Проверка работы на плагиат
Интересные статьи из справочника
Поможем написать учебную работу
Название заказа не должно быть пустым
Введите email
Доверьте свою работу экспертам
Разместите заказ
Наша система отправит ваш заказ на оценку 92 648 авторам
Первые отклики появятся уже в течение 10 минут
Прямой эфир