因爲工作需要,最近在倒騰symfony,而symfony框架裏面配置文件超級多,用的都是yaml文件作爲配置文件,由於自己對該文件不是很熟悉,故找了資料瞭解了下,此爲學習筆記。
首先舉個例子,
請將如下php數組轉換爲yaml格式:
$bat = array(
'website' =>array(
'baidu' => 'http://www.baidu.com',
'qq' => 'http://www.qq.com',
'ali' => array('http://www.taobao.com','http://www.tmall.com')
),
'ceo' => array(
'yanhongli' => '李彥宏',
'huatengma' => '麻花疼',
'yunma' => '馬雲'
)
);
用yaml來表達可以表現爲:
bat:
website:
baidu: http://www.baidu.com
qq: http://www.qq.com
ali:
- http://www.taobao.com
- http://www.tmall.com
ceo:
yanhongli: 李彥宏
huatengma: 麻花疼
yunma: 馬雲
或者這樣:
bat:
website:{ baidu: http://www.baidu.com, qq: http://www.qq.com, ali: [http://www.taobao.com, http://www.tmall.com] }
ceo:{ yanhongli: 李彥宏, huatengma: 麻花疼, yunma: 馬雲 }
在yaml裏面,結構通過縮進來表示,連續的項目通過減號“-”來表示,map結構裏面的鍵值(key/value)對用冒號“:”來分割。yaml也有用來描述好幾行相同結構數據的縮寫語法,數組用“[]”包括起來,hash用“{}”來包括。
這幾乎就是yaml的全部語法了。
使用yaml的注意事項
1.在yaml裏面,結構通過縮進來表示,yaml不支持製表符tab縮進,請使用空格縮進
2、如果參數是以空格開始或結束的字符串,應使用單引號把他包進來。如果一個字符串參數包含特殊字符,也要用單引號包起來。下面是示例:
如果要保存類似 http://www.bai'u.com這樣的數據時,下面這種寫法是錯誤的:
bat:
website:{ baidu: http://www.bai'u.com }<span style="white-space:pre"> </span>#錯誤寫法1:沒有用單引號包起來
bat:
website:{ baidu: ' http://www.bai'u.com'}<span style="white-space:pre"> </span>#錯誤寫法2:字符串中包含了單引號而且字符串開頭有空格時需要用兩個單引號來表示字符串中的單引號
正確寫法如下:
bat:
website:{ baidu: ' http://www.bai''u.com'}
3、當字符串較長時,可以使用特殊字符頭外加一個縮進表示長字符串,可以換行。下面是示例:
website:
caoliu: >
你懂的你懂的你懂的你懂的你懂的你懂的
你懂的你懂的你懂的你懂的你懂的你懂的
你懂的你懂的你懂的你懂的你懂的你懂的
dongjinre: |
你懂的你懂的你懂的你懂的你懂的你懂的
你懂的你懂的你懂的你懂的你懂的你懂的
你懂的你懂的你懂的你懂的你懂的你懂的
4、在yaml裏,用on、1、true來表示true,off、0、false來表示false
5、在yaml裏,用#做註釋
6、如果你在yaml文件中看到了.開頭的字符串,這個字符串代表的是分類頭,如下所示:
all:
.general:
tax: 19.6
mail:
webmaster: [email protected]
分類頭的主要作用在於使yaml文件更易讀。
推薦兩個php解析yaml的類庫:
1、symfony框架自帶的yaml模塊:https://packagist.org/packages/symfony/yaml
2、spyc解析類:http://sourceforge.net/projects/spyc/files/OldFiles/spyc-0.3.beta.tar.gz/download?use_mirror=iweb&download=