YAML sym欧宝娱乐app下载地址fony 1.1
这里是一个简短的教程对我发现的新YAML解析库,symfony 1.1。欧宝娱乐app下载地址正如你可能知道,YAML文件是一个symfony developpers花时间写欧宝娱乐app下载地址配置,是非常重要的,他们有一个很好的工具来操作数据和调试文件。给培训symfony 1.0是我工作的一欧宝娱乐app下载地址部分,当我看到人们开始配置文件,我可以通知symfony的第一个版本的YAML系统有两个主要问题:
错误消息不帮助开发者在YAML文件中找到自己的错误。
将PHP数据转换成YAML结构可以产生混乱的输出。
让玩YAML !
第一个好的新是你不需要使用symfony利用这个新图书馆。欧宝娱乐app下载地址作为一个非symfony项目我需要(这是悲伤的,我欧宝娱乐app下载地址知道),我唯一要做的就是包括sfYaml.class.php
文件在我的脚本。
/ /包含symfony YA欧宝娱乐app下载地址ML库include_once(的路径/ / sf1.1 / lib / yaml / sfYaml.class.php”);/ /加载YAML文件美元的数组= sfYaml::负载(“test.yml”);/ /检查我们有print_r(美元的数组);
好了,这就是我们需要测试解析和创建YAML文件!让我们创建一个test.yml
文件:
根:使:sublevel11: value11 sublevel12: value12二级:sublevel21: value21 sublevel22: value22
错误消息
你们中的一些人熟悉YAML语法可能已经注意到缩进我的错误sublevel21
线。让我们跑test.php
文件。它将爆炸在屏幕上显示以下错误:
致命错误:未捕获异常的InvalidArgumentException消息无法解析文件”测试。yml”:在第6行缩进问题(sublevel22 value22):“在/道路/ / sf1.1 / lib / yaml / sfYaml.class。php: 70堆栈跟踪:# 0 /var/www/sites/test/ - (7): sfYaml:负载(test.yml) # 1}{主要扔进/路径/ / sf1.1 / lib / yaml / sfYaml.class。php在第70行
我们大多数人有困难的时候开始YAML因为它的不妥协的语法。symfony 1.0中使用的图书馆工作欧宝娱乐app下载地址当然很好,但它有地下室的错误消息,让你花几个小时寻找失去的制表符仅在您的文件。你可以看到这里的信息很明确:在第6行缩进问题
。的标签的存在在我们的文件,我们会无法解析文件”测试。yml: YAML文件不能包含制表符缩进线…
。第二件好事是这个错误传播与异常明显。
有了这些信息,我们可以快速修正我们的错误。php脚本然后顺从地输出如下:
阵列(数组(根)= >((使)= >数组([sublevel11] = > value11 [sublevel12] = > value12)(二级)= >数组([sublevel21] = > value21 [sublevel22] = > value22)))
这是那么容易。
倾销YAML
现在让我们尝试修改数组和生成YAML结构:
/ /添加一个额外的数组美元的数组(“根”](level3的]=数组(“sublevel31”= >“value31”,“sublevel32”= >“value32”);/ /打印YAML在屏幕上回声sfYaml::转储(美元的数组);
这将产生以下输出:
根:使:{sublevel11: value11 sublevel12: value12}二级:{sublevel21: value21 sublevel22: value22} level3: {sublevel31: value31 sublevel32: value32}
这不是我们所期望的。好吧,事实上,sfYaml:转储()
可以把一个额外的内联
论点。当达到内联深度时,其余的结构倾倒YAML关联数组中。我们只需要指定一个内联的水平3
:
回声sfYaml::转储(美元的数组,3);
这将给我们:
根:使:sublevel11: value11 sublevel12: value12二级:sublevel21: value21 sublevel22: value22 level3: sublevel31: value31 sublevel32: value32
这是特别方便当倾销YAML模式从一个数据库推动:建立模式
。symfo欧宝娱乐app下载地址ny 1.0我们被用来获得肮脏的东西:
推动:prd_alert: _attributes: idMethod:本机id:类型:整数要求:真正的自动增量:真正的primaryKey:真正的假:类型:整数begin_at:类型:时间戳
现在享受输出使用新图书馆:
推动:_attributes:包:lib.model管理:id:{类型:整数,要求:真的,primaryKey:真正}登录:{类型:VARCHAR、大小:“255”,要求:真实}created_at:{类型:时间戳}_indexes: {admin_login_idx:[登录]}
您可以使用sfYaml图书馆与非symfony应用程序正是我们在这里做的方式。欧宝娱乐app下载地址这个工具也捆绑在symfony 1.1所以你可以使用它直接的行欧宝娱乐app下载地址动或任务。
我一直使用symfony 1.0和我欧宝娱乐app下载地址很高兴发现它和使用它。现在,我使用symfony 1.欧宝娱乐app下载地址1和发现这样的特点,我发现同样的快乐。
评论
评论都关门了。
以确保评论保持相关,他们关闭了旧的帖子。