YAML анализировать возвращаемый объект, а не Array, используя PHP - PullRequest
0 голосов
/ 15 апреля 2019

Я хочу использовать файл конфигурации YAML, для этого я загружаю пакет symfony/yaml с помощью composer.

Я создаю содержимое моего тестового файла YAML:

testing:
  test: 2

и анализируюэто я использую этот код:

$yaml = Yaml::parse(file_get_contents('test.yml'));
var_dump($yaml->testng);

Но я получаю эту ошибку 'Попытка получить свойство' testng 'не-объекта', потому что анализ возвращает массив, и я хочу получить объект.

Я пытался добавить (object), но он работает только для первого атрибута.

Есть ли какое-нибудь решение?

Ответы [ 2 ]

3 голосов
/ 16 апреля 2019

Согласно документации вы должны просто передать Yaml::PARSE_OBJECT_FOR_MAP в качестве второго параметра Yaml::parse():

$yaml = Yaml::parse(file_get_contents('test.yml'), Yaml::PARSE_OBJECT_FOR_MAP);
0 голосов
/ 16 апреля 2019

Вы можете использовать эту функцию

  public function toObject($array) {
        $obj = new stdClass();
        foreach ($array as $key => $val) {
            $obj->$key = is_array($val) ? $this->toObject($val) : $val;
        }
        return $obj;
    }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...