php解析yaml
根据官方定义,yaml不是一种标记语言,它是一种容易被人阅读的数据序列化格式,容易与脚本语言交互,用来描述枚举数组(sequences)和关联数组(mappings).
ymal的语法:
Structure通过空格来展示。Sequence里的项用"-"来代表,Map里的键值对用":"分隔。
yaml实例
1.yaml表示sequence
1 2 3 |
- 2 - "William O'Neil" - fals |
每个数组元素以一个连字符和一个空格开头,为了格式化漂亮,可以写多个空格。
对应php代码
1 2 3 |
<?php array(2, "William O'Neil", false); ?> |
yaml的枚举数据可以出现在同一样用'[]'包括起来。
1 |
[ 2, "William O'Neil", false ] |
2.yaml表示hash,关联数组
1 2 3 |
id: 2 name: "William O'Neil" isActive: false |
yaml的关联数组key的声明后紧接着冒号,冒号后面跟着一个或多个空格。一般冒号后有一个空格就足够了,为了好看,可以自己控制数量。
关联数据对应用的php代码
1 2 3 4 |
<?php array("id" => 2, "name" => "William O'Neil", "isActive" => false); ?> |
关联数据也可以用'{}'包括起来写在一行表示
yaml表示嵌套结构
通过行首缩进1个或多个空格表示多层结构,如:
1 2 3 |
author: 0: { id: 1, name: "Brad Taylor", isActive: true } 1: { id: 2, name: "William O'Neil", isActive: false } |
这里为了描述方便,第二层使用了关联数据表示,没有使用连字符'-'格式。
等同于如下php代码
1 2 3 4 5 6 7 8 |
<?php array( "author" => array( 0 => array("id" => 1, "name" => "Brad Taylor", "isActive" => true), 1 => array("id" => 2, "name" => "William O'Neil", "isActive" => false) ) ); ?> |
yaml表示多个多多维数据,可以没有root元素
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 |
author: 0: { id: 1, name: "Brad Taylor", isActive: true } 1: { id: 2, name: "William O'Neil", isActive: false } category: 0: { id: 1, name: "PHP" } 1: { id: 2, name: "YAML" } 2: { id: 3, name: "XML" } article: 0: id: 1 title: "How to Use YAML in Your Next PHP Project" content: > YAML is a less-verbose data serialization format. It stands for "YAML Ain't Markup Language". YAML has been a popular data serialization format among software developers mainly because it's human-readable. author: 1 status : 2 articleCategory: 0: { articleId: 1, categoryId: 1 } 1: { articleId: 1, categoryId: 2 } |
yaml定义很容易记住,需要注意的重点就是缩进必须用一个或多个空格,不能使用tab缩进。
可以配置IDE的tab为2-4个空格,这样按tab时就会插入空格,这样当使用其它编辑器打开代码是不会错乱,保持良好的缩进。
标题党