YAML解析返回对象不是数组使用PHP

时间:2019-04-15 20:56:01

标签: php symfony yaml

我想使用YAML配置文件,为此,我使用作曲器下载了symfony/yaml软件包。

我创建我的测试YAML文件内容:

testing:
  test: 2

要解析它,我使用以下代码:

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

但是,出现此错误“试图获取非对象的属性” testng”,因为解析返回数组,而我想获取一个对象。

我尝试添加(object),但它仅适用于第一个属性。

有什么解决办法吗?

2 个答案:

答案 0 :(得分:3)

根据documentation,您只需传递Yaml::PARSE_OBJECT_FOR_MAP作为Yaml::parse()的第二个参数:

$yaml = Yaml::parse(file_get_contents('test.yml'), Yaml::PARSE_OBJECT_FOR_MAP);

答案 1 :(得分:0)

您可以使用此功能

  public function toObject($array) {
        $obj = new stdClass();
        foreach ($array as $key => $val) {
            $obj->$key = is_array($val) ? $this->toObject($val) : $val;
        }
        return $obj;
    }