PHPコード自体を設定ファイルとして扱うライブラリを公開

2年以上前に作ったまま放置されてた「PHPコード自体を設定ファイルとして扱うライブラリ」が発掘されたので、せっかくなのでPacif(ぱしふ、PHP Awesome Configuration file InterFace)と名前をつけて公開します。ドキュメントは気が向いたら作るかも。

同じような事やってる人とかきっと居ると思うけど、検索しても意外と引っかからないですね。ソース見たら判るけど、やってることは非常に単純なのでわざわざ公開する方がアレかも。

ちゃんとテストしてないので、動かなかったら連絡してくれると嬉しいです。

ライセンス

BSD License

ライセンスは別になんでも良かったんですけど、Google code hostingではPublic Domainにできなかったので。

動作環境

たぶんPHP4とPHP5のどっちでも動くはず。

Pacifを使うメリット

  • たぶん高速
  • PHPがわかれば設定ファイルの文法についての学習が不要
    • だってPHPのコードでしかないんだもの
  • グローバル変数や定数を使う場合と異なり、グローバルな空間を汚さない(値を局所化できる)
  • 設定ファイル中に制御構造を書ける

かんたんな使い方

「設定ファイル」と「設定ファイルを読み込むプログラム」を用意する。

設定ファイル

こんな感じで設定ファイルを作る。

<?php
$contents_cache = false;

$database = array(
    'dsn'  => 'sqlite:test.sqlite',
    'user' => '',
    'pass' => ''
);

$smtp = array(
    'host' => '10.10.10.10',
    'user' => 'hoge',
    'pass' => 'hogehoge'
);
?>

PHPのコードそのままですね。

設定ファイルを読み込むプログラム
<?php
require 'Pacif.php';

main();

function main() {
	$config = Pacif::load('/path/to/config.php');

	var_dump($config['contents_cache']);  // false
	var_dump($config['database']);        // array('dsn' => 'sqlite:test.sqlite', 'user' => '', 'pass' => '')
	var_dump($config['smtp']['host']);    // '10.10.10.10'
}
?>

Pacif::load(); で設定ファイルを読み込むと、定義した変数名がキーになっている連想配列が返ってくる。

今後やるかもしれない事

  • PHP5でtry catchでエラーハンドリングできるようにはしたい
  • コード中のコメントをすごく適当に英語で書いたけど、あってるのか調べる