@driverx18

Тайпкастинг в DTO — можно, или нет?

Я создал класс DTO, допустим, ProductRaitingMinDTO, в котором я сделал свойства $stars, $productId, $textStatus. Тайпхинтингом в докблоке указал, что свойства соответственно float, int, string. Сразу скажу, что проект, к сожалению на версии 5.6 PHP. Однако из хранилища все данные приходят строками, и вот вопрос, как лучше, в конструкторе DTO сделать
public function __construct($stars, $productId, $textStatus)
    {
        $this->stars = (float) $stars;
        $this->productId = (int) $productId;
        $this->textStatus = $textStatus;
    }

или при создании ДТОшки
делать
new ProductRaitingMinDTO(
                        (float) $stars,
                        (int) $productId,
                        $textStatus
                        );


Какой из вариантов предпочтительнее? Допускается ли тайпкастинг в конструкторе DTO?
  • Вопрос задан
  • 272 просмотра
Решения вопроса 1
mad_maximus
@mad_maximus
Лучше в конструкторе дтошки: так вы никогда не забудете скастить тип.

upd: а еще лучше сделать VO для каждого свойства и валидировать до поступления в дтошку, потому что дтошка - это просто структура данных. В целом, приводить к нужному типу можете и в дтошке, ничего страшного.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

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