Yaml组件
编辑本页警告:您正在浏览的文档欧宝官网下载appob娱乐下载Symfony 2.8,现已不再维护。
读本页的更新版本用于Syob娱乐下载mfony 6.2(当前稳定版本)。
Yaml组件
Yaml组件加载和转储Yaml文件。
这是什么?
Symfob娱乐下载ony Yaml组件解析Yaml字符串,将其转换为PHP数组。它还能够将PHP数组转换为YAML字符串。
YAML,YAML不是标记语言,是适用于所有编程语言的人类友好的数据序列化标准。YAML是配置文件的一种很好的格式。YAML文件和XML文件一样具有表现力,和INI文件一样具有可读性。
Symfob娱乐下载ony Yaml组件实现了定义在YAML 1.2版本规范.
提示
中了解有关Yaml组件的更多信息YAML格式篇文章。
安装
1
$作曲家需要symfony/yamlob娱乐下载
或者,您可以克隆https://github.com/ob娱乐下载symfony/yaml存储库。
请注意
如果在Symfony应用程序外部安装此组件,则必须要求ob娱乐下载供应商/ autoload.php
文件,以启用Composer提供的类自动加载机制。读这篇文章欲知详情。
为什么?
快
Symfony Yaml的目标之一是在速ob娱乐下载度和功能之间找到正确的平衡。它只支持处理配置文件所需的特性。值得注意的是:文档指令、多行引用消息、紧凑块集合和多文档文件。
真正的解析器
它展示了一个真正的解析器,能够解析YAML规范的一个大子集,以满足您的所有配置需求。这还意味着该解析器非常健壮,易于理解,并且易于扩展。
清除错误消息
每当您的YAML文件出现语法问题时,库都会输出一条有用的消息,其中包含发生问题的文件名和行号。它大大简化了调试。
转储文件支持
它还能够在对象支持下将PHP数组转储到YAML,并提供内联级配置以获得漂亮的输出。
类型支持
它支持大多数YAML内置类型,如日期、整数、八进制、布尔值等等……
完全合并键支持
完全支持引用、别名和完整的合并键。不要重复引用常用配置位。
使用Symfony ob娱乐下载YAML组件
Symfob娱乐下载ony Yaml组件非常简单,由两个主要类组成:一个解析Yaml字符串(解析器),另一个将PHP数组转储到YAML字符串(自动倾卸车).
在这两个类之上,是Yaml类充当简化常用用途的薄包装器。
读取YAML文件
的parse ()方法解析YAML字符串并将其转换为PHP数组:
1 2 3
使用ob娱乐下载\组件\Yaml\Yaml;$价值= Yaml::解析函数(“/道路/ / file.yml”));
谨慎
因为目前可以向此方法传递文件名,所以必须首先验证输入。传递文件名在Symfony 2.2中已弃用,在Symfony 3.0中已ob娱乐下载被移除。
如果在解析期间发生错误,解析器将抛出抛出ParseExceptionexception指示错误类型和原始YAML字符串中错误发生的行:
1 2 3 4 5 6 7
使用ob娱乐下载\组件\Yaml\异常\抛出ParseException;试一试{$价值= Yaml::解析函数(“/道路/ / file.yml”));}抓(ParseException$异常) {printf("无法解析YAML字符串:%s",$异常->getMessage ());}
编写YAML文件
的dump ()方法将任何PHP数组转储到它的YAML表示:
1 2 3 4 5 6 7 8 9 10
使用ob娱乐下载\组件\Yaml\Yaml;$数组=数组(“foo”= >“酒吧”,“酒吧”= >数组(“foo”= >“酒吧”,“酒吧”= >“记者”),);$yaml= Yaml::转储($数组);写入“/道路/ / file.yml”,$yaml);
如果在转储期间发生错误,解析器将抛出DumpException例外。
数组扩展和内联
YAML格式支持两种数组表示形式:扩展数组和内联数组。默认情况下,转储器使用扩展表示:
1 2 3 4
foo:酒吧栏:foo:酒吧栏:巴兹
的第二个参数dump ()方法自定义输出从展开表示切换到内联表示的级别:
1
回声Yaml::转储($数组,1);
1 2
foo:酒吧栏:{foo:酒吧,栏:巴兹}
1
回声Yaml::转储($数组,2);
1 2 3 4
foo:酒吧栏:foo:酒吧栏:巴兹
缩进
默认情况下,YAML组件将使用4个空格作为缩进。这可以使用第三个参数进行更改,如下所示:
1 2
//使用8个空格缩进回声Yaml::转储($数组,2,8);
1 2 3 4
foo:酒吧栏:foo:酒吧栏:巴兹
无效类型和对象序列化
默认情况下,YAML组件将任何“不受支持的”类型(即资源和对象)编码为零
.
而不是编码为零
如果在转储器或解析器中遇到无效类型,您可以选择抛出异常,如下所示:
1 2 3 4 5
//如果遇到资源或对象,则抛出异常Yaml::转储($数据,2,4,真正的);//如果在YAML字符串中找到已编码的对象,则抛出异常Yaml::解析($yaml,真正的);
然而,你可以使用下一个参数激活对象支持:
1 2 3 4 5 6 7 8 9
$对象=新\ stdClass ();$对象->foo =“酒吧”;$倾倒= Yaml::转储($对象,2,4,假,真正的);/ / ! ! php /对象:O: 8:“stdClass”:1:{:5:“foo”;销售:7:“酒吧”;}$解析= Yaml::解析($倾倒,假,真正的);var_dump (is_object ($解析));/ /正确的回声$解析->foo;/ /酒吧
YAML组件使用PHP的serialize ()
方法生成对象的字符串表示形式。
谨慎
对象序列化是特定于此实现的,其他PHP YAML解析器可能无法识别php /对象
标签和非php实现当然不会——谨慎使用!