YAML格式

编辑本页

警告:您正在浏览的文档欧宝体育电话欧宝娱乐app下载地址Symfony 3.0,现已不再维护。

本页的更新版本用于Sy欧宝娱乐app下载地址mfony 6.2(当前稳定版本)。

YAML格式

据这位官员说YAML在网站上,YAML是“适用于所有编程语言的人类友好的数据序列化标准”。

即使YAML格式可以描述复杂的嵌套数据结构,本章也只描述了使用YAML作为配置文件格式所需的最小特性集。

YAML是一种描述数据的简单语言。作为PHP,它有用于简单类型(如字符串、布尔值、浮点数或整数)的语法。但与PHP不同的是,它区分了数组(序列)和哈希(映射)。

标量

标量的语法类似于PHP语法。

字符串

YAML中的字符串可以用单引号和双引号进行包装。在某些情况下,它们也可以不被引用:

1 2 3 4 5
一个字符串YAMLYAML中的单引号字符串YAML中的双引号字符串

当字符串以一个或多个相关空格开始或结束时,带引号的样式非常有用,因为在解析其内容时,不带引号的字符串将在两端进行修剪。当字符串包含特殊字符或保留字符时,需要使用引号。

当使用单引号字符串时,任何单引号它的内部内容必须加倍才能转义:

1
“单引号”'在单引号字符串内'

包含下列任意字符的字符串必须加引号。虽然您可以使用双引号,但对于这些字符,使用单引号更方便,这样可以避免转义任何反斜杠

  • ?|-<>@

双引号样式提供了一种表达任意字符串的方法,使用转义字符和序列。例如,当您需要嵌入一个\ n或字符串中的Unicode字符。

1
" YAML\n中的双引号字符串"

如果字符串包含以下任意控制字符,则必须使用双引号转义:

  • \ 0\ x01\ x02\ x03\ x04\ x05\ x06、一个\ b\ t\ nv \\ fr \\ x0e\ x0f\ x10\ x11\ x12\ * 13\ x14英寸\连接\ x16\ x17\ x18\ x19\ x1a\ e\ x1c\ x1d\ x1e\ x1f\ N\ _L \\ P

最后,在其他情况下,字符串必须使用双引号,无论你是使用单引号还是双引号:

  • 当字符串为真正的(否则,它将被视为一个布尔值);
  • 当字符串为(否则,它将被视为一个值);
  • 当字符串看起来像一个数字时,例如整数(例如。214,等等),浮点数(例如。2.614.9)和指数数(例如:12 e7,等等)(否则,它将被视为数值);
  • 当字符串看起来像一个日期(例如:2014-12-31)(否则将自动转换为Unix时间戳)。

当字符串包含换行符时,可以使用由管道(|),表示该字符串将跨越几行。在字面量中,换行符被保留:

1 2 3
|\/ /| |\/| | / /| | | |__

字符串也可以用折叠样式来写,表示为>,其中每个换行符都被空格取代:

1 2 3 4 5
>这是一个非常长的句子,在YAML中跨越了几行,但它将被呈现为一个不带回车符的字符串。

请注意

注意前面例子中每行前的两个空格。它们不会出现在结果的PHP字符串中。

数字

1 2
#一个整数12
1 2
#八进制014
1 2
#十六进制0我
1 2
#浮点数13.4
1 2
指数数1.2 e + 34
1 2
#无穷inf

零位

YAML中的空值可以用

布尔值

YAML中的布尔值用真正的而且

日期

YAML使用ISO-8601标准来表示日期:

1
2001-12年-14年t21:59:43.10-05:00
1 2
#简单约会2002-12年-14年

集合

YAML文件很少用于描述简单的标量。大多数时候,它描述一个集合。集合可以是序列,也可以是元素的映射。序列和映射都转换为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
“欧宝娱乐app下载地址symfony 1.0”:PHP:5.0推动:1.2“欧宝娱乐app下载地址symfony 1.2”:PHP:5.2推动:1.3

上面的YAML相当于下面的PHP代码:

1 2 3 4 5 6 7 8 9 10
数组“欧宝娱乐app下载地址symfony 1.0”= >数组“PHP”= >5.0“推动”= >1.2),“欧宝娱乐app下载地址symfony 1.2”= >数组“PHP”= >5.2“推动”= >1.3,),);

在YAML文件中使用缩进时,有一件重要的事情需要记住:缩进必须使用一个或多个空格,但绝不可以使用制表器

你可以嵌套序列和映射,因为你喜欢:

1 2 3 4 5 6
“第一章”:-简介-事件类型“第二章”:-简介-助手

YAML还可以为集合使用流样式,使用显式指示器而不是缩进来表示范围。

序列可以写成方括号内以逗号分隔的列表([]):

1
(PHP,Perl,Python)

映射可以写成用逗号分隔的键/值列表({}):

1
PHP:5.2MySQL:5.1Apache:2.2.20

你可以混合搭配样式来获得更好的可读性:

1 2
“第一章”:(介绍,事件类型)“第二章”:(介绍,助手)
1 2
“欧宝娱乐app下载地址symfony 1.0”:PHP:5.0推动:1.2“欧宝娱乐app下载地址symfony 1.2”:PHP:5.2推动:1.3

评论

注释可以在YAML中添加,只需在注释前加上一个散列标记():

1 2 3
#评论一行“欧宝娱乐app下载地址symfony 1.0”:PHP:5.0推动:1.2在一行的末尾注释“欧宝娱乐app下载地址symfony 1.2”:PHP:5.2推动:1.3

请注意

注释被YAML解析器简单地忽略,并且不需要根据集合中嵌套的当前级别缩进。

此工作,包括代码示例,是根据创作共用BY-SA 3.0许可证。