<?xml version="1.0" encoding="UTF-8"?>

<rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" >

  <channel>
    <title><![CDATA[Комментарии к публикации «Value object и DTO в PHP (DDD)»]]></title>
    <link>https://habr.com/ru/articles/916590/</link>
    <description><![CDATA[Комментарии к публикации «Value object и DTO в PHP (DDD)»]]></description>
    <language>ru</language>
    <managingEditor>editor@habr.com</managingEditor>
    <generator>habr.com</generator>
    <pubDate>Tue, 28 Apr 2026 13:24:42 GMT</pubDate>
    
    
      <image>
        <link>https://habr.com/ru/</link>
        <url>https://habrastorage.org/webt/ym/el/wk/ymelwk3zy1gawz4nkejl_-ammtc.png</url>
        <title>Хабр</title>
      </image>
    

    
      

      
        
  
    <item>
      <title>07.07.2025 17:48:24 Ivan6463</title>
      <guid isPermaLink="true">https://habr.com/ru/articles/916590/#comment_28541392</guid>
      <link>https://habr.com/ru/articles/916590/#comment_28541392</link>
      <description><![CDATA[<p>За опечатку спасибо большое, поправлю, за создание лучше на мой взгляд можно использовать сервис по созданию сущности из которой будет запрос в бд на уникальность например тайтла и уже создание через фабрику(принимает уже валидные данные) сущности </p>]]></description>
      <pubDate>Mon, 07 Jul 2025 17:48:24 GMT</pubDate>
      <dc:creator><![CDATA[Ivan6463]]></dc:creator>
    </item>
  

  
    <item>
      <title>03.07.2025 06:00:24 KiazimKhutaba</title>
      <guid isPermaLink="true">https://habr.com/ru/articles/916590/#comment_28520916</guid>
      <link>https://habr.com/ru/articles/916590/#comment_28520916</link>
      <description><![CDATA[<p>Здравствуйте! Спасибо за статью.</p><p>у вас опечатка - "счет ее излишней в примере.", полагаю, что там должно быть "счел..."</p><p>также, а что если title должен быть уникальным, как тогда правильнее оформить обработку данного случая в ValueObject, и вообще должна ли данная проверка быть в ValueObject?</p>]]></description>
      <pubDate>Thu, 03 Jul 2025 06:00:24 GMT</pubDate>
      <dc:creator><![CDATA[KiazimKhutaba]]></dc:creator>
    </item>
  

  
    <item>
      <title>09.06.2025 09:03:04 vanxant</title>
      <guid isPermaLink="true">https://habr.com/ru/articles/916590/#comment_28415054</guid>
      <link>https://habr.com/ru/articles/916590/#comment_28415054</link>
      <description><![CDATA[<blockquote><p> То есть, какое название с Вашей точки зрения - было бы удачное? </p></blockquote><p>Ну, эээ, собственно DTO. Ну если мы про PHP, то в симфони например создать невалидную дтошку из запроса можно, с целью например потом подтянуть какие-то значения ещё откуда-то, но вот пробросить по шине и обработать невалидную дто уже нельзя, шина не пропустит. </p><p>Ну и надо различать валидацию (поле email содержит что-то, что выглядит как емейл) и верификацию (например, бизнес-логика требует, что этот емейл должен быть в БД, иначе сначала иди подтверди его через отправку письма с кодом). </p>]]></description>
      <pubDate>Mon, 09 Jun 2025 09:03:04 GMT</pubDate>
      <dc:creator><![CDATA[vanxant]]></dc:creator>
    </item>
  

  
    <item>
      <title>09.06.2025 07:18:47 Ivan6463</title>
      <guid isPermaLink="true">https://habr.com/ru/articles/916590/#comment_28414610</guid>
      <link>https://habr.com/ru/articles/916590/#comment_28414610</link>
      <description><![CDATA[<p>Насчет название и смысла - так может показаться, если прийти к <code>ValueObject</code> через интуицию(то есть не прибегая к специализированному материалу). <br>Например логика может быть такая: переводится как объект значение - ну тут все понятно)) Пойду кодить)))<br><br>Что же касается смысла, причин использования и примеры на мой взгляд интересных реализаций - это можно подсмотреть в книге Вон Верон "Предметно-ориентированное проектирование". Там достаточно подробно это все описано.<br><br>Опять же это мое видение.<br>А что касается конкретного названия - смею предположить, что нужно было как то назвать этот подход и тут <code>"Объект-значение"</code> в контексте архитектурного <code>подхода</code> и в контексте <code>синтаксиса</code> выбранного языка программирование - может означать <code>разный смысл</code>.<br>В первом случае(<code>контекст подхода</code>) - это <code>осмысление</code> текущего объекта со стороны <code>бизнес логики</code><br>Во втором случае(<code>контекст синтаксиса ЯП</code>) - можно предположить, как раз таки, что у объекта есть <code>какое то значение</code> и ни про какую бизнес логику или осмысление тут уже речь не идет.<br><br>И закончу ответ фразой: "Отвергаешь - предлагай". То есть, какое название с Вашей точки зрения - было бы удачное?<br></p>]]></description>
      <pubDate>Mon, 09 Jun 2025 07:18:47 GMT</pubDate>
      <dc:creator><![CDATA[Ivan6463]]></dc:creator>
    </item>
  

  
    <item>
      <title>08.06.2025 19:47:20 Ivan6463</title>
      <guid isPermaLink="true">https://habr.com/ru/articles/916590/#comment_28413252</guid>
      <link>https://habr.com/ru/articles/916590/#comment_28413252</link>
      <description><![CDATA[<p>Насчет замечания по поводу исключений - такой подход так же имеет место быть. Я же хотел - как можно максимальнее сосредоточить статью на DTO и VO. Что бы все внимание досталось именно им.<br><br>Что же касается - логирования - в текущем контексте - это был лишь инструмент для того, что б показать абстрактный пример обработки исключения на одном из слое. Возможно нужно было - подобрать немного иную абстракцию.<br><br>'empty' поправил(убрал) - спасибо, Вы правы)</p>]]></description>
      <pubDate>Sun, 08 Jun 2025 19:47:20 GMT</pubDate>
      <dc:creator><![CDATA[Ivan6463]]></dc:creator>
    </item>
  

  
    <item>
      <title>08.06.2025 19:03:41 vanxant</title>
      <guid isPermaLink="true">https://habr.com/ru/articles/916590/#comment_28413136</guid>
      <link>https://habr.com/ru/articles/916590/#comment_28413136</link>
      <description><![CDATA[<p>ValueObject - неудачное название. Под этим часто понимают класс с единственным полем value (часто даже публичным), смысл которого - запретить сомнительные операции. Например, id часто представляет собой целое число, но это число - вещь в себе. Ни умножать ни складывать его ни с чем нельзя, но при этом можно сравнивать (т.е. вычитать с отбрасыванием результата). Вот здесь и нужен тип IntValue, который при этом умеет сериализовываться / десериализовываться в число. </p>]]></description>
      <pubDate>Sun, 08 Jun 2025 19:03:41 GMT</pubDate>
      <dc:creator><![CDATA[vanxant]]></dc:creator>
    </item>
  

  
    <item>
      <title>08.06.2025 11:15:03 Rsa97</title>
      <guid isPermaLink="true">https://habr.com/ru/articles/916590/#comment_28411758</guid>
      <link>https://habr.com/ru/articles/916590/#comment_28411758</link>
      <description><![CDATA[<blockquote><p>Проблемы: много параметров,</p></blockquote><p>Это не такая уж и проблема, особенно учитывая то, что для создания DTO вам нужно использовать точно такое же количество параметров. При этом, параметры функции <code>SendMail1</code> точно так же отображаются в подсказках IDE, как и подсказки функции <code>__construct</code> класса <code>ClientMailDTO</code>.</p><blockquote></blockquote><pre><code class="php">if ($this-&gt;currency !== 'USD' || $this-&gt;currency !== 'RUB') {
</code></pre><p>А здесь есть другое решение - <code>Enum</code> с нужными валютами. При этом IDE будет подсказывать, какие варианты допустимы в качестве параметра функции.</p>]]></description>
      <pubDate>Sun, 08 Jun 2025 11:15:03 GMT</pubDate>
      <dc:creator><![CDATA[Rsa97]]></dc:creator>
    </item>
  

  
    <item>
      <title>08.06.2025 10:51:04 FanatPHP</title>
      <guid isPermaLink="true">https://habr.com/ru/articles/916590/#comment_28411688</guid>
      <link>https://habr.com/ru/articles/916590/#comment_28411688</link>
      <description><![CDATA[<p>Спасибо за статью. Но не удержусь от пары замечаний.</p><ul><li><p>Ошибку валидации вряд ли нужно логировать. Это, по сути, не ошибка, а совершенно ожидаемое поведение. Да, там останется только перевыброс исключения. И как раз на этом стоит остановиться поподробнее</p></li><li><p>Код не станет сложнее, если Exception поменять на ServiceValidationException и DomainValidationException, но зато станет куда более логичным и приближённым к реальности. А сейчас смотришь, и не понимаешь, почему ошибка, к примеру, соединения базы данных возвращает 400, а не 500 статус</p></li><li><p>И вот тут как раз и объяснить, почему вы меняем DomainValidationException на ServiceValidationException</p></li></ul><p>Ну и совсем уж по мелочи</p><ul><li><p>ошибку "Не корректная сумма денег" надо заменить на "Некорректная валюта"  (и в целом надо бы вычитать на грамматические ошибки и опечатки)</p></li><li><p>проверка на empty($this-&gt;value) не имеет смысла, её стоит убрать</p></li></ul>]]></description>
      <pubDate>Sun, 08 Jun 2025 10:51:04 GMT</pubDate>
      <dc:creator><![CDATA[FanatPHP]]></dc:creator>
    </item>
  

  
    <item>
      <title>08.06.2025 10:32:13 TsarS</title>
      <guid isPermaLink="true">https://habr.com/ru/articles/916590/#comment_28411638</guid>
      <link>https://habr.com/ru/articles/916590/#comment_28411638</link>
      <description><![CDATA[<p>Интересней в примере получение данный в DTO  - например из сервиса/queryBus в DTO</p>]]></description>
      <pubDate>Sun, 08 Jun 2025 10:32:13 GMT</pubDate>
      <dc:creator><![CDATA[TsarS]]></dc:creator>
    </item>
  

  
    <item>
      <title>08.06.2025 09:50:31 Ivan6463</title>
      <guid isPermaLink="true">https://habr.com/ru/articles/916590/#comment_28411520</guid>
      <link>https://habr.com/ru/articles/916590/#comment_28411520</link>
      <description><![CDATA[<p>У DDD подобный подход, и у луковой архитектуры тоже. То есть вышеперечисленные используют подобный общий подход. Думаю Ваше суждение верное, как и если бы сказали, что это DDD - то тоже было бы верно</p>]]></description>
      <pubDate>Sun, 08 Jun 2025 09:50:31 GMT</pubDate>
      <dc:creator><![CDATA[Ivan6463]]></dc:creator>
    </item>
  

  
    <item>
      <title>08.06.2025 08:52:01 fo_otman</title>
      <guid isPermaLink="true">https://habr.com/ru/articles/916590/#comment_28411342</guid>
      <link>https://habr.com/ru/articles/916590/#comment_28411342</link>
      <description><![CDATA[<p>Это разве не чистая архитектура? Контроллер - Use Case - Сервис - Сущность.</p>]]></description>
      <pubDate>Sun, 08 Jun 2025 08:52:01 GMT</pubDate>
      <dc:creator><![CDATA[fo_otman]]></dc:creator>
    </item>
  

      

      

    
  </channel>
</rss>
