symfony ob娱乐下载1.1中的YAML
下面是一个简短的教程,介绍我对symfony 1.1附带的新的YAML解析库的发现。ob娱乐下载正如你所知道的,YAML文件是symfony开发人员花费时间编写配置的地方,有一ob娱乐下载个好的工具来操作数据和调试文件是非常重要的。对symfony 1.0进行培训是我工作ob娱乐下载的一部分,当我看到人们启动配置文件时,我可以注意到symfony第一版中的YAML系统有两个主要问题:
错误消息不能帮助开发人员发现YAML文件中的错误。
将PHP数据转换为YAML结构会产生混乱的输出。
让我们玩YAML吧!
第一个好处是您不必使用symfony来利用这个新库。ob娱乐下载因为我需要它为一个非symfony项目(这是可悲的ob娱乐下载,我知道),我唯一要做的就是包括sfYaml.class.php
文件在我的脚本。
//包含symfony YAMob娱乐下载L库include_once(的路径/ / sf1.1 / lib / yaml / sfYaml.class.php”);//加载YAML文件美元的数组= sfYaml::负载(“test.yml”);//检查我们得到了什么print_r(美元的数组);
好了,这就是我们测试解析和创建YAML文件所需要的全部内容!我们来创建一个test.yml
文件:
Root: level1: sublevel11: value11 sublevel12: value12 level2: sublevel21: value21 sublevel22: value22
错误消息
一些熟悉YAML语法的人可能已经注意到我在sublevel21
线。让我们运行test.php
文件。它将在屏幕上爆炸,显示以下错误:
致命错误:未捕获异常“InvalidArgumentException”与消息“无法解析文件”测试。yml":第6行缩进问题(sublevel22: value22)'在/path/to/sf1.1/lib/yaml/sfYaml.class.php:70堆栈跟踪:#0 /var/www/sites/test/-(7): sfYaml::load('test.yml') #1 {main}抛出在/path/to/sf1.1/lib/yaml/sfYaml.class.php第70行'
大多数人在开始使用YAML时都有困难,因为它的语法不妥协。symfony 1.0中使用的库当然工作ob娱乐下载得很好,但它有加密错误消息,让您花费数小时寻找文件末尾单独丢失的制表符。你可以看到这里的信息很清楚:第6行有缩进问题
.在文件中出现制表符的情况下,我们将有无法解析文件“test”。YAML文件不能包含制表符作为缩进行…
.第二个好处是这个错误是通过异常传播的,所以它是可捕获的。
有了这些信息,我们就可以迅速改正错误。php脚本然后乖乖地输出如下内容:
Array ([sublevel11] => value11 [sublevel12] => value12) [level2] => Array ([sublevel21] => value21 [sublevel22] => value22)))
就这么简单。
倾销YAML
现在让我们尝试修改数组并生成相应的YAML结构:
//添加一个额外的级别到我们的数组美元的数组[“根”][level3的]=数组(“sublevel31”= >“value31”,“sublevel32”= >“value32”);//将YAML打印到屏幕上回声sfYaml::转储(美元的数组);
这将产生以下输出:
Root: {sublevel11: value11, sublevel12: value12} level2: {sublevel21: value21, sublevel22: value22} level3: {sublevel31: value31, sublevel32: value32
这并不是我们所期望的。事实上,sfYaml:转储()
可以多拿一个内联
论点。当达到内联深度时,结构的其余部分被转储为YAML关联数组。我们只需要指定一个内联级别3.
:
回声sfYaml::转储(美元的数组,3.);
这将给我们:
Root: level1: sublevel11: value11 sublevel12: value12 level2: sublevel21: value21 sublevel22: value22 level3: sublevel31: value31 sublevel32: value32
这在从数据库中转储YAML模式时特别方便推动:建立模式
.在symfob娱乐下载ony 1.0中,我们被用来获得一些肮脏的东西,比如:
propel: prd_alert: _attributes: idMethod:本机id: type: INTEGER required: true autoIncrement: true primaryKey: true dummy: type: INTEGER begin_at: type: TIMESTAMP
现在享受使用新库的输出:
Propel: _attributes: package: lib。model admin: id: {type: INTEGER, required: true, primaryKey: true} login: {type: VARCHAR, size: '255', required: true} created_at: {type: TIMESTAMP} _indexes: {admin_login_idx: [login]}
您可以在非symfony应用程序中使用sfYaml库,就像我们在这里所做的那样。ob娱乐下载此工具还与symfony 1.1捆绑在一起,因此您可以直接在操ob娱乐下载作或任务中使用它。
我一直在使用symfony 1.0,ob娱乐下载我很高兴发现它并使用它。现在,我正在使用symfony ob娱乐下载1.1并发现像这样的功能,我再次找到了同样的乐趣。
评论
评论截止。
为了确保评论保持相关性,旧帖子将被关闭。