Symfonyob娱乐下载 3.1新增功能:可定制的YAML解析和转储
警告:这篇文章是关于一个不受支持的Symfony版本。ob娱乐下载有些信息可能已经过时了。阅读最新的Symfony文档ob娱乐下载.
YAML是定义Symfony应用程序配置的最流行的格式之一。ob娱乐下载此外,YAML组件是我们第二受欢迎的组件,有数千万的下载量和成千上万的PHP项目依赖于它。
类的行为在以前的Symfob娱乐下载ony版本中parse ()
而且dump ()
方法是部分可配置的。例如,parse ()
方法定义了一个布尔参数配置对象映射的行为属性的第五个参数也可以切换对象支持dump ()
方法:
1 2 3
使用ob娱乐下载\组件\Yaml\Yaml;Yaml::转储(数组(“foo”= >新(),“酒吧”= >1),0,4,假,真正的);
然而,这些功能有一些缺点。首先,布尔参数(也称为“标志参数”)通常是不推荐.其次,这不能很好地扩展,因为它迫使您为新特性定义新的方法参数。
引入配置标志
在Syob娱乐下载mfony 3.1中,为了避免上述所有问题并不断添加新特性,我们决定为YAML组件引入配置标志.属性中定义的常量ob娱乐下载Symfony \ \ Yaml \ Yaml组件
类。例如,启用对象支持dump ()
方法,使用Yaml: DUMP_OBJECT
不变:
1 2 3
使用ob娱乐下载\组件\Yaml\Yaml;Yaml::转储(数组(“foo”= >新(),“酒吧”= >1),0,4, Yaml::DUMP_OBJECT);
多亏了这种基于标志的配置机制,我们已经开始向YAML组件添加许多新特性。请继续阅读,了解其中一些特性。
解析和转储DateTime对象
如果YAML字符串的内容可以解释为有效的DateTime值,则使用newYaml: PARSE_DATETIME
把这些字符串转换成合适的\ DateTime
PHP对象:
1 2 3 4 5 6
$日期= Yaml::解析('2001-12-15 21:59:43.10 -5', Yaml::PARSE_DATETIME);// $date =日期时间{// "date": "2001-12-15 21:59:43.100000"// "timezone_type": 1 .使用实例// "timezone": "-05:00"/ /}
此外,\ DateTime
而且\ DateTimeImmutable
对象现在被转储为YAML时间戳:
1 2 3
$日期=新\ DateTime (“2001-07-15 21:59:43”,新\ DateTimeZone时区(“欧洲/柏林”));$时间戳= Yaml::转储(数组(“日期”= >$日期));// $timestamp = 'date: 2001-07-15T21:59:43+02:00'
显示无效类型上的异常
新Yaml: DUMP_EXCEPTION_ON_INVALID_TYPE
属性的第四个参数dump ()
方法,它使应用程序在传递无效类型时触发异常(例如在转储PHP资源时):
1
Yaml::转储(数组(“foo”= >新(),“酒吧”= >1),0,4, Yaml::DUMP_EXCEPTION_ON_INVALID_TYPE);
将对象转储为映射
考虑下面的PHP对象:
1 2 3
$对象=新\ stdClass ();$对象->foo =“foo”;$对象->酒吧=新\ StdClass ();
常规的dump ()
方法不会提供您可能期望的结果,但新的Yaml: DUMP_OBJECT_AS_MAP
标志将按预期转储对象:
1 2 3 4 5
$dumpedObject= Yaml::转储($对象,0,4);// $dumpedObject = "{object: null}"Yaml::转储($对象,0,4, Yaml::DUMP_OBJECT_AS_MAP);// $dumpedObject = "{object: {foo: foo, bar: {}}}"
将多行字符串转储为标量块
这是Symfony开发人员要求最多的特性之一。ob娱乐下载考虑以下字符串包含的内容\ n
人物:
1 2 3
$数据=数组(“内容”= >"Lorem ipsum dolor sit met\nconsectetur adipisicing\nelit sed do eiusmod",);
多亏了新的Yaml: DUMP_MULTI_LINE_LITERAL_BLOCK
标志,你可以告诉YAML考虑这些\ n
用于创建标量块的字符:
1
$dumpedData= Yaml::转储($数据,2,4, Yaml::DUMP_MULTI_LINE_LITERAL_BLOCK);
在本例中,的第二个参数dump ()
设置为2
避免内联YAML的前两层缩进。结果如下:
1 2 3 4
内容:| Lorem ipsum dolor sit met consectetur adipisicing elit sed do eiusmod
如果您设置了较低的缩进级别或不使用Yaml: DUMP_MULTI_LINE_LITERAL_BLOCK
标志,你会得到以下结果:
1
内容:"Lorem ipsum dolor sit met\nconsectetur adipisicing\nelit sed do eiusmod"
评论
评论截止。
为了确保评论保持相关性,旧帖子将被关闭。
它在第二个代码片段的上面。
Javier Eguiluz is a certified Symfony engineer.
Get certified! Online exams available in all countries.
Register Now