Symfony 3.2将引入一些微小的YAML“不建议使用”的内容,为的是令YAML组件完全兼容YAML协议。
不建议使用:键映射后不跟空格 ¶
当定义一个映射时,YAML需要在键与值之间的冒号后面至少跟一个空格。在以前版本的Symfony中,我们没有要求必须有此空格。在Symfony 3.2中,我们不建议再有这种行为,到Symfony 4.0时就会抛出一个ParseException
异常。
1 2 3 4 5 6 7 8 9 10 11 12 13 | # It works in Symfony 3.1, it's deprecated in 3.2, it fails in 4.0
# 3.1中还能这样运行,3.2中被deprecated,4.0中失效
parameters:
foo:bar
published:true
default_page:1
# It works in every past, present and future Symfony version
# 这样就可以在过去、现在和将来的Symfony版本中正常运行
parameters:
foo: bar
published: true
default_page: 1 |
不建议使用:定义重复的键 ¶
之前版本的Symfony中,当一个YAML文件包含重复的键时,第一个键将被使用,剩余的键都被静默地忽略了(silently ignored):
1 2 3 4 5 6 7 | # the second key is ignored and this document is parsed
# as: 'parameters' => array('key' => 'aaa')
# 第二个键被忽略,而文档会被解析为:'parameters' => array('key' => 'aaa')
parameters:
key: 'aaa'
# ...
key: 'bbb' |
Symfony 3.2中,这种行为不建议出现,Symfony 4.0中将抛出ParseException
异常,现在是时候检查你的YAML文件中是否存在重复的键了。
已被转移到YAML组件中的yaml:lint命令 ¶
并非严格意义上的不建议使用,但Symfony 3.2中我们决定把yaml:lint
命令从FrameworkBundle中转移到YAML组件。这样一来,你在检查(lint)你的YAML文件时将毋须再加载整个FrameworkBundle。
唯一的不同是,当使用YAML组件中的yaml:lint
时,你可以检查文件和目录,而使用完整版框架时,更可以检查bundles:
1 2 3 4 5 6 7 8 9 10 11 | # it works in the component and the framework
# 在组件和框架中皆可运行
./bin/console yaml:lint parameters.yml
./bin/console yaml:lint app/config/
# it only works in the framework
# 仅作用于完整版框架
./bin/console yaml:lint @AppBundle |