@gog69

Какой тут паттерн нужен?

Обьект создается на основе неких данных и в процессе этого возможно что некое свойство должно получить значении нового экземпляра такого же класса
типа

class Detail {
     function create($data) {
          ......
         
         $this->nestedDatail = new Detail()->create( $data->nestedDetailData );
         return $this;
     }
}

(консткруктор занят dependency injection)
  • Вопрос задан
  • 304 просмотра
Пригласить эксперта
Ответы на вопрос 2
@MadridianFox
Web-программист, многостаночник
А нужен ли тут паттерн? Возможно стоило бы описать недостатки того что есть, хотелки, и спросить как этого добиться.
Ответ написан
by25
@by25
Веб-разработчик
Ваш класс очень похож на объект бизнес-логики (domain entity).
Предпочтительно использовать при создании объекта и установки значений конструктор (entity всегда должна быть валидной) и постараться избавиться от внедрения зависимости через конструктор, например так:

public function updatePassword($plainPassword, PasswordEncoderInterface $encoder) {
    $this->password = $this->encoder->encode($plainPassword);
}


Если у нас множество вариантов создания объекта, удобно использовать именованные конструкторы, такого вида:

public static function create($userName, $email) {
    $user = new self();
    $user->username = $username;
    // ...
    return $user;
}

public static function createFromMyVariant($uid) {
    $user = new self();
    // ...
    return $user;
}
Ответ написан
Ваш ответ на вопрос

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

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