источник - опыт. так что возможно я не прав.
я исхожу из того, что vo это сложный тип данных, который там на месте все проверит.
но если ты используешь простые - инт, стринг. то и на месте проверять. в любом случае ДТО имеет обязанность принять данные и отдать данные. т.е. работа с данными. как минимум тм уже есть тайп хинтинг. так почему бы не добавить пару валидаторов?
у меня в энтити доктрины в сеттерах всегда есть проверки.
ентити доктрины отвечают и за структуру бд (миграции) и за хранение данных в объетке, но смысловая нагрузка все же куда более узкая у энтити, тогда как дто - универсальный смысл. Насколько я помню (нужно уточнить терминологию в гугле), у ДТО, согласно первому принципу солид, единственной ответственностью является передача данных между слоями в приложении, а реализация валидации там же - это нарушение первого принципа получается