170 похожих чатов

Value object может изменять сам себя? Можно добавить метод edit?



class SomeVO {
private $name;
public function edit($name): void
{
$this->name = $name;
}
}

7 ответов

9 просмотров

Может, но зачем? Мб путаете с dto?

Tristam- Автор вопроса
Volodymyr Melko
Может, но зачем? Мб путаете с dto?

Разве VO от DTO отличается не тем, что DTO является структурой, которая не предполагает любых методов? Содержит только данные для передачи

Tristam
Разве VO от DTO отличается не тем, что DTO являетс...

Да, а ВО идентифицируется значением. Если меняется значение, то это другое ВО

Tristam
Разве VO от DTO отличается не тем, что DTO являетс...

Разве? Я писал DTO с сеттерами и геттерами

Tristam- Автор вопроса
Volodymyr Melko
Да, а ВО идентифицируется значением. Если меняется...

По условию задачи у меня есть сущность заказа интернет-магазина. Эта сущность обладает несколькими свойствами, которые соответствуют данным о доставке товара (город, адрес...). Поэтому я вынес свойства о доставке в отдельный объект "Delivery" и подумал, что это будет как-бы "embedded value object" (ни к какому фреймворку задача не привязана). Часть свойств заказа (в том числе данные о доставке) должны быть редактируемыми. Поэтому я создал public метод "edit" как для объекта заказа, так и для объекта Delivery. Конечно, ни какого id у объекта Delivery нет, то есть связано может быть только по значению. А значит - это не сущность (надеюсь, что я верно рассуждаю). Если Delivery это не VO, то что? Я, наверное, в дизайне допустил ошибку. При этом предполагается только одна таблица - таблица заказа. И отступить от этого я не могу upd: Кажется я понял, что менять vo нельзя, но можно создать новый и привязать с новыми значениями

Tristam- Автор вопроса
Tristam
По условию задачи у меня есть сущность заказа инте...

Volodymyr c Doctrine я не работал, но в доках нашел, что embeddable есть value object. И, видимо, embeddable не иммутабелен https://www.doctrine-project.org/projects/doctrine-orm/en/2.9/tutorials/embeddables.html

Tristam- Автор вопроса

Ок. VO должен быть иммутабелен. А можно метод edit заменить на SomeVO::fromSelf? Чтобы получить новый объект, но со значениями свойств старого?

Похожие вопросы

Обсуждают сегодня

Какой-то там пердун в 90-х решил, что есть какая-то разная типизация. Кого вообще это волнует?
КТ315
49
void terminal_scroll() { memmove(terminal_buffer, terminal_buffer + VGA_WIDTH, buffer_size - VGA_WIDTH); memset(terminal_buffer + buffer_size - VGA_WIDTH, 0, VGA_WIDTH); ...
Егор
47
Всем привет! Подскажите, пожалуйста, в чем ошибка? Настраиваю подключение к MySQL. Либы лежат рядом с exe. Все как по "учебнику"
Евгений
16
А можете как-то проверить меня по знаниям по ассемблеру?
A A
132
Здравствуйте! У меня появилась возможность купить книгу "Изучай Haskell во имя добра!". Но я где-то слышал, что эта книга устарела. Насколько это правда??
E
22
Здравствуйте! Я вот на stepic решаю задачи на хаскеле https://stepik.org/lesson/8443/step/8?unit=1578 мой код import Data.List (isInfixOf) removing :: String -> [String] ->...
E
10
Камрады, кто тесно работал с vtv, хотел уточнить. Ширина column задаётся жёстко на этапе создания дерева или можно в рантайме ее менять программно (не мышкой)?
Ed Doc
10
да ладно ... что там неочевидного ? глянуть в исх-ки датасета и/или кверика чтобы понять в каком месте и как выполняется обращения к св-вам blablaSQL - минутное дело, даже е...
Сергей
7
Здесь для arm кто-нибудь кодит ?
Nothing
52
Всем привет, у меня есть сервер принимающий входящие HTTP подключения, как проверить, что подключение было через прокси или нет, есть какие то поля в заголовках по которым мо...
DS
8
Карта сайта