YAML格式
编辑本页警告:您正在浏览的文档欧宝官网下载appob娱乐下载Symfony 2.7,现已不再维护。
读本页的更新版本用于Syob娱乐下载mfony 6.2(当前稳定版本)。
YAML格式
据这位官员说YAML的网站, YAML是“适用于所有编程语言的人类友好的数据序列化标准”。的一个子ob娱乐下载集YAML规范.具体来说,它实现了使用YAML作为配置文件格式所需的最小特性集。
标量
标量的语法类似于PHP语法。
字符串
YAML中的字符串可以用单引号和双引号进行包装。在某些情况下,它们也可以不被引用:
1 2 3 4 5
一个字符串在YAMLYAML中的单引号字符串YAML中的双引号字符串
当字符串以一个或多个相关空格开始或结束时,带引号的样式非常有用,因为在解析其内容时,不带引号的字符串将在两端进行修剪。当字符串包含特殊字符或保留字符时,需要使用引号。
当使用单引号字符串时,任何单引号'
它的内部内容必须加倍才能转义:
1
“单引号”'在单引号字符串内'
包含下列任意字符的字符串必须加引号。虽然您可以使用双引号,但对于这些字符,使用单引号更方便,这样可以避免转义任何反斜杠\
:
:
,{
,}
,[
,]
,,
,&
,*
,#
,?
,|
,-
,<
,>
,=
,!
,%
,@
,`
双引号样式提供了一种表达任意字符串的方法,使用\
转义字符和序列。例如,当您需要嵌入一个\ n
或字符串中的Unicode字符。
1
" YAML\n中的双引号字符串"
如果字符串包含以下任意控制字符,则必须使用双引号转义:
\ 0
,\ x01
,\ x02
,\ x03
,\ x04
,\ x05
,\ x06
,、一个
,\ b
,\ t
,\ n
,v \
,\ f
,r \
,\ x0e
,\ x0f
,\ x10
,\ x11
,\ x12
,\ * 13
,\ x14英寸
,\连接
,\ x16
,\ x17
,\ x18
,\ x19
,\ x1a
,\ e
,\ x1c
,\ x1d
,\ x1e
,\ x1f
,\ N
,\ _
,L \
,\ P
最后,在其他情况下,字符串必须使用双引号,无论你是使用单引号还是双引号:
- 当字符串为
真正的
或假
(否则,它将被视为一个布尔值); - 当字符串为
零
或~
(否则,它将被视为一个零
值); - 当字符串看起来像一个数字时,例如整数(例如。
2
,14
,等等),浮点数(例如。2.6
,14.9
)和指数数(例如:12 e7
,等等)(否则,它将被视为数值); - 当字符串看起来像一个日期(例如:
2014-12-31
)(否则将自动转换为Unix时间戳)。
当字符串包含换行符时,可以使用由管道(|
),表示该字符串将跨越几行。在字面量中,换行符被保留:
1 2 3
|\/ /| |\/| | / /| | | |__
字符串也可以用折叠样式来写,表示为>
,其中每个换行符都被空格取代:
1 2 3 4 5
>这是一个非常长的句子,在YAML中跨越了几行,但它将被呈现为一个不带回车符的字符串。
请注意
注意前面例子中每行前的两个空格。它们不会出现在结果的PHP字符串中。
零位
YAML中的空值可以用零
或~
.
布尔值
YAML中的布尔值用真正的
而且假
.
集合
YAML文件很少用于描述简单的标量。大多数时候,它描述一个集合。YAML集合可以是一个序列(PHP中的索引数组)或元素的映射(PHP中的关联数组)。
序列使用破折号后面加空格:
1 2 3
-PHP-Perl-Python
上面的YAML文件相当于下面的PHP代码:
1
数组(“PHP”,“Perl”,“巨蟒”);
映射使用冒号后跟空格(:
)来标记每个键/值对:
1 2 3
PHP:5.2MySQL:5.1Apache:2.2.20
这相当于下面的PHP代码:
1
数组(“PHP”= >5.2,“MySQL”= >5.1,“阿帕奇”= >“2.2.20”);
请注意
在映射中,键可以是任何有效的标量。
冒号和值之间的空格数无关紧要:
1 2 3
PHP:5.2MySQL:5.1Apache:2.2.20
YAML使用缩进和一个或多个空格来描述嵌套集合:
1 2 3 4 5 6
“ob娱乐下载symfony 1.0”:PHP:5.0推动:1.2“ob娱乐下载symfony 1.2”:PHP:5.2推动:1.3
上面的YAML相当于下面的PHP代码:
1 2 3 4 5 6 7 8 9 10
数组(“ob娱乐下载symfony 1.0”= >数组(“PHP”= >5.0,“推动”= >1.2),“ob娱乐下载symfony 1.2”= >数组(“PHP”= >5.2,“推动”= >1.3,),);
在YAML文件中使用缩进时,有一件重要的事情需要记住:缩进必须使用一个或多个空格,但绝不可以使用制表器.
你可以嵌套序列和映射,因为你喜欢:
1 2 3 4 5 6
“第一章”:-简介-事件类型“第二章”:-简介-助手
YAML还可以为集合使用流样式,使用显式指示器而不是缩进来表示范围。
序列可以写成方括号内以逗号分隔的列表([]
):
1
(PHP,Perl,Python)
映射可以写成用逗号分隔的键/值列表({}
):
1
{PHP:5.2,MySQL:5.1,Apache:2.2.20}
你可以混合搭配样式来获得更好的可读性:
1 2
“第一章”:(介绍,事件类型)“第二章”:(介绍,助手)
1 2
“ob娱乐下载symfony 1.0”:{PHP:5.0,推动:1.2}“ob娱乐下载symfony 1.2”:{PHP:5.2,推动:1.3}
评论
注释可以在YAML中添加,只需在注释前加上一个散列标记(#
):
1 2 3
#评论一行“ob娱乐下载symfony 1.0”:{PHP:5.0,推动:1.2}在一行的末尾注释“ob娱乐下载symfony 1.2”:{PHP:5.2,推动:1.3}
请注意
注释被YAML解析器简单地忽略,并且不需要根据集合中嵌套的当前级别缩进。
显式类型
YAML规范定义了一些标记来显式地设置任何数据的类型:
1 2 3 4 5 6 7 8 9 10
数据:#此值被解析为浮点数(它将是3.0而不是3)价格:!!浮动3.#该值被解析为base64编码的二进制数据图片:!!二进制| R0lGODlhDAAMAIQAAP//9/X 17unp5WZmZgAAAOfn515eXv Pz7Y6OjuDg4J+fn5OTk6enp 56enmleECcgggoBADs=
不支持的YAML特性
Symfony YAML组件不支持以下YAML特性:ob娱乐下载
- 多文档(
---
而且...
标记); - 复杂的映射键和复杂的值
?
; - 标记值作为键;
- 以下标签和类型:' !!设置”、“! !omap”、“! !对”、“! !设置”、“! !seq”、“! !bool”、“! !int ', ' ! !合并”、“! !空”、“! !时间戳”、“! !值”、“! ! yaml ';
- 标签(
标签
指令;例子:%的标签!标签:example.com, 2000: app /
)和标签引用(例如:! <标签:example.com, 2000: app / foo >
); - 使用类似序列的语法来映射元素(例如:
{foo,酒吧}
;使用{foo: ~, bar: ~}
相反)。