@goshaLoonny

Можно ли в PHP передать управление в другой класс?

Опишу задачу. Есть API которое возвращает JSON в котором есть объект. Структура объекта может быть разной, определить что за объект можно только посмотрев поле type. В документации описаны все возможные структуры. В js я бы мог просто сделать так:
class ResponceObject{
  constructor(data) {
    switch (data.type) {
      case 'type1': return new ResponceObject1(data);
      case 'type2': return new ResponceObject2(data);
      case 'type3': return new ResponceObject3(data);
      case 'type4': return new ResponceObject4(data); 
    }
  }
}

но в php конструкторы не могу ничего возвращать. Как же быть?
  • Вопрос задан
  • 132 просмотра
Решения вопроса 1
Rsa97
@Rsa97
Для правильного вопроса надо знать половину ответа
class ResponseObject
{
    public static function parse(object $data): ResponseObject1|ResponseObject2|ResponseObject3|ResponseObject4
    {
        switch ($data->type) {
            case 'type1':
                return new ResponseObject1($data);
            case 'type2':
                return new ResponseObject2($data);
            case 'type3':
                return new ResponseObject3($data);
            case 'type4':
                return new ResponseObject4($data); 
        }
    }
}
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

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

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