今回は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開発者をサポートする情報を掲載しています。