YAML格式

编辑该页面

警告:你浏览的文档欧宝体育电话欧宝娱乐app下载地址Symfony 5.1,不再维护。

这个页面的更新版本Symf欧宝娱乐app下载地址ony 6.2(当前的稳定版本)。

YAML格式

根据官方YAML的网站YAML是“人类友好的数据序列化所有编程语言标准”。Symf欧宝娱乐app下载地址ony Yaml组件实现的一个子集YAML规范。具体地说,它实现了最小的一组特性作为配置文件需要使用YAML格式。

标量

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

字符串

YAML的字符串可以包裹在单引号和双引号。在某些情况下,他们也可以非挂牌:

1 2 3 4 5
一个字符串YAML“YAML singled-quoted字符串”“一个双引号字符串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 6 7 8 9 10 11 12 13
>这是一个很长的句子在YAML跨越几行。#这是解析如下:(注意落后\ n)#“这是一个很长的句子,跨越几行YAML。\ n”>这是一个很长的句子在YAML跨越几行。#这是解析如下:(没有落后\ n)#“这是一个很长的句子,跨越几行YAML。”

请注意

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

数字

1 2
#一个整数12
1 2
#一个八进制0 o14

5.1

在YAML 1.1中,八进制数字使用的符号0…1.2,而在YAML的符号改变0啊…。欧宝娱乐app下载地址Symfony 5.1添加了支持YAML 1.2符号和弃用支持YAML 1.1符号。

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

零位

在YAML可以表示null~

布尔值

布尔值在YAML表达真正的

日期

YAML使用iso - 8601标准表达日期:

1
2001年-12年-14年t21:59:43.10-05:00
1 2
#简单的日期2002年-12年-14年

集合

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
“欧宝娱乐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.2,MySQL:5.1,Apache: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解析器和不需要根据当前缩进级别的嵌套在一个集合中。

显式类型

YAML规范定义了一些标签来显式地设置的任何数据类型:

1 2 3 4 5 6 7 8 9 10 11 12 13
数据:#这个值作为字符串解析(这不是变成一个DateTime)start_date:! ! str2002年-12年-14年#解析这个值作为一个浮动数量(这将是3.0,而不是3)价格:浮! !3#这个值解析使用base64编码的二进制数据图片:二进制! !| R0lGODlhDAAMAIQAAP / / 9 / X 17 unp5wzmzgaaaofn515exv Pz7Y6OjuDg4J + fn5OTk6enp 56 enmleeccgggobads =

不支持的YAML特性

下面的YAML Symfony YAML组件不支持的特性:欧宝娱乐app下载地址

  • 多文档(推荐- - - - - -标记);
  • 复杂的映射键和复杂的价值观开始吗?;
  • 标记值作为键;
  • 下面的标签和类型:组! !,核心! !,! !对,seq ! !,bool ! !,int ! !,合并! !,零! !,! !时间戳,价值! !,! ! yaml;
  • 标签(标签指令;例子:%的标签!标签:example.com, 2000: app /)和标签引用(例如:! <标签:example.com, 2000: app / foo >);
  • 使用类似于序列语法映射元素(例如:{foo,酒吧};使用{foo: ~,酒吧:~}相反)。
这项工作,包括代码示例,许可下Creative Commons冲锋队3.0许可证。