BonBonSlick
@BonBonSlick
Junior Web Developer Trainee

Имеет ли смысл использовать конструкторы в ДТО?

Пример простого ДТО
class UpdateUser extends AbstractRequestEntityDTO {
    public ?string         $authToken;
    public ?string         $email;
    public ?string         $description;
    public ?string         $fallbackEmail;
    public ?string         $slug;
    public ?string         $nickname;
    public ?string         $countryAlpha2;
    public ?string         $languageAlpha2;
    public ?string         $languageNativeName;
    public ?string         $countryNativeName;

    public function __construct(
        ?string $email = null,
        ?string $nickname = null,
        ?string $slug = null,
        ?string $fallbackEmail = null,
        ?string $countryAlpha2 = null,
        ?string $languageAlpha2 = null
    ) {
        $this->nickname       = $nickname;
        $this->email          = $email;
        $this->fallbackEmail  = $fallbackEmail;
        $this->slug           = $slug;
        $this->countryAlpha2  = $countryAlpha2;
        $this->languageAlpha2 = $languageAlpha2;
    }


Обычно 5-8 полей, редко больше или меньше, но вознкиает вопрос, к примеру вряд ли для того что бы установить слаг в ДТО мы будем использоват конструктор, а ниче это будет вот такое

new UpdateUser (null,null,null,null,null,null,'newNickname');


когда проще делать статик фабрик
UpdateUser::fromRequest($request)
но такой подход небезопасен
Склоняюсь к билдеру
(new UpdateUser)->setNickname($request->request->get('nickname'))->setOtherFields();


Но тут возникает вопрос, а имеет ли тогда вообще смысл использовать для ДТО конструкторы?

Как поступаете вы и почему так?
  • Вопрос задан
  • 88 просмотров
Решения вопроса 1
а ниче это будет вот такое

Именованные аргументы в помощь:
new UpdateUser(nickname: 'newNickname');
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

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

Войти через центр авторизации
Похожие вопросы