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

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



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

7 ответов

11 просмотров

Может, но зачем? Мб путаете с 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? Чтобы получить новый объект, но со значениями свойств старого?

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

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

Господа, а что сейчас вообще с рынком труда на делфи происходит? Какова ситуация?
Rꙮman Yankꙮvsky
29
А вообще, что может смущать в самой Julia - бы сказал, что нет единого стандартного подхода по многим моментам, поэтому многое выглядит как "хаки" и произвол. Короче говоря, с...
Viktor G.
2
30500 за редактор? )
Владимир
47
а через ESC-код ?
Alexey Kulakov
29
Чёт не понял, я ж правильной функцией воспользовался чтобы вывести отладочную информацию? но что-то она не ловится
notme
18
У меня есть функция где происходит это: write_bit(buffer, 1); write_bit(buffer, 0); write_bit(buffer, 1); write_bit(buffer, 1); write_bit(buffer, 1); w...
~
14
Добрый день! Скажите пожалуйста, а какие программы вы бы рекомендовали написать для того, чтобы научиться управлять памятью? Можно написать динамический массив, можно связный ...
Филипп
7
Недавно Google Project Zero нашёл багу в SQLite с помощью LLM, о чём достаточно было шумно в определённых интернетах, которые сопровождались рассказами, что скоро всех "ибешни...
Alex Sherbakov
5
Ребят в СИ можно реализовать ООП?
Николай
33
https://github.com/erlang/otp/blob/OTP-27.1/lib/kernel/src/logger_h_common.erl#L174 https://github.com/erlang/otp/blob/OTP-27.1/lib/kernel/src/logger_olp.erl#L76 15 лет назад...
Maksim Lapshin
20
Карта сайта