新在Symfo欧宝娱乐app下载地址ny 3.1: YAML的用法
2016年4月19日·发表的哈维尔Eguiluz
警告:这篇文章是关于一个不受支持的Symfony的版本。欧宝娱乐app下载地址其中一些信息可能是过时了。阅读最近的Symfony文档欧宝娱乐app下载地址。
我们介欧宝娱乐app下载地址绍了一些在Symfony 2.8YAML的用法使配置文件符合YAML规范。Symfony 3.1中我们介绍了额外的用法,其中一些需要新的YAML特性将在下一篇文章中解释欧宝娱乐app下载地址道。
弃用的! ! php /对象
标签
YAML属性的值可以序列化PHP对象由于特殊! ! php /对象
标签:
1 2 3
# app / config / config.yml参数:my_object:“! ! php /对象:O: 27日:“AppBundle \服务\ MyService”: 1:{年代:1:“b”; s: 3:“foo”;}”
在Sy欧宝娱乐app下载地址mfony 3.1我们弃用! ! php /对象
新标签的php /对象!
标签,这几乎是相同的但是只有一个前缀!
性格:
1 2 3
# app / config / config.yml参数:my_object:”! php /对象:O: 27:“AppBundle \服务\ MyService”: 1: {: 1:“b”; s: 3:“foo”;}”
弃用的翻车机:setIndentation ()
方法
当使用Yaml组件独立于Symfony框架,你可以使用了欧宝娱乐app下载地址setIndentation ()
方法来设置空格的数量在每个缩进级别(补充道4
默认情况下)。
1 2 3 4
使用欧宝娱乐app下载地址\组件\Yaml\自动倾卸车;美元yaml=新翻车机();美元yaml- >setIndentation (2);
在Sy欧宝娱乐app下载地址mfony 3.1弃用该方法在Symfony 4.0中,它将被删除。相反,设置缩进级别作为构造函数的参数:
1 2 3
使用欧宝娱乐app下载地址\组件\Yaml\自动倾卸车;美元yaml=新翻车机(2);
弃用标量开始与%
字符
这弃用肯定会影响你所有的Symfony应用程序。欧宝娱乐app下载地址如果你打开你的YAML配置文件,你会发现一些值封闭%
字符,这意味着他们是Symfony容器参数:欧宝娱乐app下载地址
1 2 3 4 5 6 7 8 9 10 11
框架:秘密:%的秘密%路由器:资源:% kernel.root_dir % / config / routing.yml#……default_locale:%地区%枝:调试:% kernel.debug %strict_variables:% kernel.debug %#……
在Sy欧宝娱乐app下载地址mfony 3.1中,使用%
初一个非上市字符串是弃用Symfony 4.0中,它将被删除。欧宝娱乐app下载地址解决方案是简单但有点无聊:包装这些字符串用单引号或双引号:
1 2 3 4 5 6 7 8 9 10 11
框架:秘密:“% %的秘密”路由器:资源:“% kernel.root_dir % / config / routing.yml”#……default_locale:“%地区%”枝:调试:“% kernel.debug %”strict_variables:“% kernel.debug %”#……
发表在#生活在边缘
评论
地主选手Somfai
说在4月19日,2016年从9点半
但它是symfony的医生,如果是用引号包围(像在这种欧宝娱乐app下载地址情况下),它将被视为字符串。
引用http://symfony.c欧宝娱乐app下载地址om/doc/current/components/yaml/yaml_format.html
最后,还有其他情况必须引用的字符串,无论如果你使用单引号或双引号:
当字符串是真或假(否则,它将被视为一个布尔值);
引用http://symfony.c欧宝娱乐app下载地址om/doc/current/components/yaml/yaml_format.html
最后,还有其他情况必须引用的字符串,无论如果你使用单引号或双引号:
当字符串是真或假(否则,它将被视为一个布尔值);
康斯坦丁·Myakshin
说在4月19日,2016年在09:33
恐怕没有。看到ruby https://repl.it/CHH7/0的例子
@Oskar突出不见了……因为YAML的语法是错的。为什么?因为字符串以“%”开始并不用引号。这正是为什么我们弃用。
@Konstantin你混合两个东西:YAML解析器不知道任何关于一个布尔值,当达到% kernel.debug %字符串(无论有或没有引号)。它只是一个字符串。所以结果YAML解析后配置前后是相同的这一变化的解析器。但是,是什么让这个有用的事实DependencyInjection组件与服务定义做一些额外的事情。这些事情之一是替换参数占位符(比如% kernel.debug %)与他们的实际价值。尽管在这个阶段没有区别的占位符之前和之后的变化解析器,它可以像往常一样,代之以布尔真或假(以防参数设置正确)。
Javier Eguiluz is a certified Symfony engineer.
Get certified! Online exams available in all countries.
Register Now