今回はPHPでYAML形式のデータを扱うためのライブラリである「Spyc」について紹介します。

YAMLとは主に記号とインデントで構造を表現し、XMLと比べて読みやすく、編集 等が容易になっています。 PHPではフレームワークのSymfony等で設定データの定義用にも使用されています。

Spycはsourceforgeにてオープンソース開発されており、 YAMLから連想配列へデコード、連想配列からYAMLへのエンコードが非常に簡単に 行えます。

まず、以下のサイトからSpycをダウンロードします。

http://spyc.sourceforge.net/ (2006年10月現在のバージョンは0.2.3となっています。)

適当なディレクトリに解凍して、includeすれば使用できます。

【YAML→配列変換】
・test.yml
---------------------------------
database:
 real:
  adapter:  mysql
  host:     localhost
  database: phppro
  username: asial
  password: password
 test:
  adapter:  mysql
  host:     localhost
  database: test_phppro
  username: test_asial
  password: test_password
---------------------------------

<?php
require_once('spyc.php');
//Spyc::YAMLLoad(ファイル or YAML文字列);
$array Spyc::YAMLLoad('test.yml');
print_r($array);
?>
---------------------------------
・出力
Array
(
    [database] => Array
        (
            [real] => Array
                (
                    [adapter] => mysql
                    [host] => localhost
                    [database] => phppro
                    [username] => asial
                    [password] => password
                )

            [test] => Array
                (
                    [adapter] => mysql
                    [host] => localhost
                    [database] => test_phppro
                    [username] => test_asial
                    [password] => test_password
                )

        )

)

また、配列をYAMLに変換するには以下のようにします。

【配列→YAML変換】
<?php
require_once('spyc.php');
//Spyc::YAMLDump(配列, インデント, 1行の長さ);
$array = array("aaa""bbb", array("ccc""ddd"), "eee" => "fff");
$yaml Spyc::YAMLDump($array,4,60);
print_r($yaml);
?>
・出力
---
- aaa
- bbb
-
    - ccc
    - ddd
eee: fff

このように簡単に、PHPとYAMLの変換ができます。 YAMLファイルを使用する際には、皆さんもぜひ使ってみてはいかがでしょうか。


(アシアル 中川善樹)

この記事は、アシアルが運営するPHP開発者のためのポータル&コミュニティサイト「PHPプロ!」で毎週配信しているPHP・TIPSメーリングリストを再録したものです。
同サイトでは、他にもPHP最新ニュースや、困ったときのQ&A掲示板、初心者向けのPHP講座など、PHP開発者をサポートする情報を掲載しています。