Symfonyob娱乐下载 3.1中的新功能:弃用YAML
2016年4月19日·发表的哈维尔Eguiluz
警告:这篇文章是关于一个不受支持的Symfony版本。ob娱乐下载有些信息可能已经过时了。阅读最新的Symfony文档ob娱乐下载.
在Syob娱乐下载mfony 2.8中,我们介绍了一些YAML的用法在Symfony 3.1中,我们引入了额外的弃用项,其中一些是新的YAML特性所需要的,将在接下来的文章中解释。ob娱乐下载
弃用的!!php /对象
标签
由于特殊的特性,YAML属性的值可以被序列化为PHP对象!!php /对象
标签:
1 2 3
# app / config / config.yml参数:my_object:“! ! php /对象:O: 27日:“AppBundle \服务\ MyService”:1:{年代:1:“b”;s: 3:“foo”;}”
在Syob娱乐下载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 ()
方法
在独立于Symfony框架使用Yaml组件时,您可能已经使用了ob娱乐下载setIndentation ()
方法设置在每个缩进级别上添加的空白数(即4
默认情况下)。
1 2 3 4
使用ob娱乐下载\组件\Yaml\自动倾卸车;$yaml=新翻车机();$yaml->setIndentation (2);
在Syob娱乐下载mfony 3.1中,此方法已弃用,并将在Symfony 4.0中删除。相反,将缩进级别设置为构造函数参数:
1 2 3
使用ob娱乐下载\组件\Yaml\自动倾卸车;$yaml=新翻车机(2);
已弃用起始标量%
字符
这种弃用肯定会影响您的所有Symfony应用程序。ob娱乐下载如果打开YAML配置文件,您将发现一些值包含%
字符,这意味着它们是Symfony容器参数:ob娱乐下载
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 %#……
在Syob娱乐下载mfony 3.1中,%
在不带引号的字符串的开头使用是不赞成的,它将在Symfony 4.0中被删除。ob娱乐下载解决方案很简单,但有点烦人:用单引号或双引号来包装这些字符串:
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
2016年4月19日说从9点半
但是,正如symfony文档中所述,如果它被引号括起来ob娱乐下载(就像在这种情况下),它将被视为字符串。
引用自http://symfony.ob娱乐下载com/doc/current/components/yaml/yaml_format.html
最后,在其他情况下,字符串必须使用双引号,无论你是使用单引号还是双引号:
当字符串为true或false时(否则,它将被视为布尔值);
引用自http://symfony.ob娱乐下载com/doc/current/components/yaml/yaml_format.html
最后,在其他情况下,字符串必须使用双引号,无论你是使用单引号还是双引号:
当字符串为true或false时(否则,它将被视为布尔值);
康斯坦丁·Myakshin
2016年4月19日说在09:33
恐怕不行。参见ruby https://repl.it/CHH7/0中的示例
@奥斯卡,高亮部分不见了…因为YAML语法是错误的。为什么?因为以“%”开头的字符串没有被引号括起来。这正是我们反对这个的原因。
你在这里混淆了两件事:当到达%kernel.debug%字符串时,YAML解析器不知道布尔值(无论是否带引号)。它只是一个字符串。因此,解析YAML配置之后的结果在修改解析器之前和之后是相同的。但是,使其有用的是,DependencyInjection组件使用服务定义做了一些额外的事情。其中之一就是将参数占位符(如%kernel.debug%)替换为它们的实际值。尽管在这个阶段,由于在对解析器进行更改之前和之后占位符没有区别,但它可以像往常一样使用布尔值true或false替换它(如果参数设置正确)。
Javier Eguiluz is a certified Symfony engineer.
Get certified! Online exams available in all countries.
Register Now