[TOC] #### 1. yaml 介紹 --- yaml 是一種類似 xml 和 json 的標(biāo)記性語言。yaml 是一種直觀的數(shù)據(jù)序列化格式,可讀性強(qiáng),各種編程語言都有支持 yaml 的庫。它以數(shù)據(jù)為核心,比傳統(tǒng)的 xml 更加簡潔。其文件擴(kuò)展名可以使用 .yml 和 .yaml #### 2. yaml 數(shù)據(jù)結(jié)構(gòu) --- **yaml 認(rèn)為數(shù)據(jù)由三種結(jié)構(gòu)組成: 純量、序列、鍵值表** **1\. 純量 (scalars)** 純量又稱為標(biāo)量,就是最基本的、不可再分的值,如: 字符串、布爾值、數(shù)字、null、時(shí)間、日期 ```yaml title: 網(wǎng)站標(biāo)題 mobile: 10086 job: ~ jobs: null ``` **2\. 序列** 序列又稱為數(shù)組、列表 ```yaml # 序列 js: - vue - react ``` 轉(zhuǎn)為 javascript 后 ``` { js: ['vue', 'react'] } ``` **3\. 鍵值表** 鍵值表其實(shí)就是對象或數(shù)組,在 js 中是對象,在 php 中是數(shù)組 ```yaml # 鍵值表 database: username: "root" password: "123456" ``` 轉(zhuǎn)為 php 數(shù)據(jù)后 ``` ^ array:1 [▼ "database" => array:2 [▼ "username" => "root" "password" => "123456" ] ] ``` #### 3. yaml 基本語法 --- 1\. `---` 表示 yaml 格式,代表文件的開始; `...` 表示結(jié)束,結(jié)束標(biāo)記可以省略 ``` ---yaml database: username: "root" password: "123456" ... ``` 2\. `#` 表示單行注釋,注釋內(nèi)容會(huì)被解析器忽略 ```yaml # 名稱 name: 網(wǎng)站標(biāo)題 # 數(shù)組 javascript: - vue - react ``` 3\. 使用空格表示層級關(guān)系: 縮進(jìn)的空格數(shù)量不重要,但相同層級的元素必須左側(cè)對齊。特別注意: 不支持 tab 縮進(jìn) ```yaml # 錯(cuò)誤寫法 database: username: "root" password: "123456" # 正確寫法 database: username: "root" password: "123456" ``` #### 4. yaml 庫 --- 各種編程語言都有支持 yaml 數(shù)據(jù)格式的庫,在 PHP 中可以使用: ``` composer require symfony/yaml ``` ```php $file = 'data.yml'; $config = (new \Symfony\Component\Yaml\Yaml)->parseFile($file); ```