yumでインストールできるyamlライブラリ:php-symfony-YAML

フレームワーク外でも簡単にyamlを使いたく、かといってphpバンドルのyamlライブラリを使うのもいまいちな気がしたので、yumでインストールするyamlライブラリを使いました。やや古いライブラリのようですが、今回は機能より気楽さです。以下、使い方です。

インストール方法

linuxディストリビューションごとにパッケージが用意されているようです。CentOSの場合はepelを使うことでyumで入れられます。

$ sudo yum install php-symfony-YAML

ファイルはpearとして「/usr/share/pear/SymfonyComponents/YAML」に配備されます。

使い方

pearなのでまずrequireします。

require_once('SymfonyComponents/YAML/sfYaml.php');

sfYaml::load($input)

yamlをパースして配列を返します。引数はyaml文字列またはファイルパスです。ファイルがあればファイルとして、そうでなければyaml文字列として解釈されます。そのため、ファイルパスを渡したつもりで存在しないファイルパスだった場合、エラーにならずにパース結果が返ってくるので要注意です(yaml要素として解釈されます)。

ファイルを渡した場合、yamlファイル内のPHPコードを実行します。このあたりの挙動はSymfonyらしさが出ています。

パースに失敗するとInvalidArgumentExceptionを返します。例外メッセージはsyntaxエラーの内容が書いてあるので、デバッグに便利です。ファイルを解釈させた場合にはファイル名も含みます。

文字列ではなく配列、もしくはyamlファイルではなくPHP配列を記述したファイルを渡した場合、パースをせずに中身をそのまま返します。このあたりの挙動はインプット内容をキャッシュするために用意したもののように思われます。

sfYaml::dump($array, $inline = 2)

配列をyaml文字列に変換します。

sfYaml::setSpecVersion($version)

yamlのバージョンを指定します。”1.1″または”1.2″を引数にとります。それ以外を渡すと例外を投げられてしまいます。
呼び出さない場合のデフォルトは1.2です。

過去の互換性を気にする場合ぐらいにしか使わないのではないかと思います。

sfYaml::getSpecVersion()

setterがあるのでgetterもあります。