PHPでYAMLをロードする

notoです。

おれおれフレームワークを実装している際に、設定ファイルを読み込ませてごにょごにょしたいなと google先生に教えを乞うていましたら、ありましたYAMLなるものが。

YAMLとは

構造化データやオブジェクトを文字列にシリアライズ(直列化)するためのデータ形式の一種 YAML Ain’t a Markup Language(YAMLはマークアップ言語ではない)の意味

rubyやPHPフレームワークのsymfonyでは設定ファイルとして利用されているようです。

PHPでYAMLを扱う

PHPでYAMLを扱うためのクラスであるSpycをインストールして、どのように出力されるのかみていきます。

出力コード

1
2
3
4
5
6
7
8
include('spyc.php');

$array = Spyc::YAMLLoad('sample.yml');

echo 'result:', PHP_EOL;
print_r($array);

echo Spyc::YAMLDump($array);

リスト

単純な配列にしたい場合。

sample.yml
1
2
3
-hoge
-piyo
-fuga

出力結果

sample.yml
1
2
3
4
5
6
7
8
9
10
11
12
result:
Array
(
    [0] => hoge
    [1] => piyo
    [2] => fuga
)

---
0: hoge
1: piyo
2: fuga

ハッシュ

sample.yml
1
2
name:noto
sex:male

出力結果

sample.yml
1
2
3
4
5
6
7
8
9
10
result:
Array
(
    [name] => noto
    [sex] => male
)

---
name: noto
sex: male

リストのハッシュ

インデントは半角スペース2つがお作法です。

sample.yml
1
2
3
4
codelife:
  -noto
  -chakemi
  -iyama

出力結果

sample.yml
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
result:
Array
(
    [codelife] => Array
        (
            [0] => noto
            [1] => chakemi
            [2] => iyama
        )

)

---
codelife:
  0: noto
  1: chakemi
  2: iyama

これは便利ですね。symfonyでは、本番環境用・デバッグ環境用などの設定をymlに記載しているみたいなので、ちょっくら真似してみようと思います。

Comments