Symfony OptionsResolver многомерный массив массивов - PullRequest
1 голос
/ 21 мая 2019

у меня есть ответ на запрос rest api в этой форме

{
    "first_field": null,
    "elements": [
        {
            "type": "type_1",
            "quantity": 234
        },
        {
            "type": "type_2",
            "quantity": 432
        },
        {
            "type": "type_3",
            "quantity": 112
        },
        {
            "type": "type_4",
            "quantity": 212
        }
    ],
    "third_field": {
        "option1": value1,
        "option2": "value2",
        "option3": "value3",
        "option4": "value4"
    }
}

Я хотел бы передать его конструктору для создания объекта. Я думал использовать Symfony4 OptionsResolver для его настройки.

Пустой и неполный пример

    class Status{

      public function __construct(array $options){
        $resolver = new OptionsResolver();
        $this->configureOptions($resolver);

        $this->options = $resolver->resolve($options);
        $this->init();
      }

     protected function init(){
       foreach($this->options['elements'] as $element){
         switch($element['type']){
           case 'type_1'
             $this->type1 = $element['quantity'];
             break;
           // And so on
         }
       }
     }

    }

Как я могу определить в OptionsResolver массив элементов? Для третьего поля решение - это вложенные опции , но это массив опций, а не массив опций ...

Заранее спасибо

EDIT Для создания нового объекта из объекта Json хорошим решением может быть karriere / json-decoder

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...