PHPでマクロを使えるようにするライブラリ作りました。
名前はStream_Macroです。
C言語のようにマクロ機能が使えるようになります。
http://openpear.org/package/Stream_Macro
作成理由
元々既存のPHPファイルやテンプレートファイルを雛形にしてソース生成したいと思ったけど、
既存のテンプレートエンジンやジェネレータを以下の問題があって断念しました。
- テンプレートファイル雛形をテンプレートエンジンで記述するとわけわかめになる。
- PHPで直書いても良いけど今度は、PHPコードが生成前に使うコードか、生成後に使うコードか、わけわかめになる。
- Zend Frameworkなどにもコードジェネレートはあって、クラス定義などする場合は、とても便利だけど
処理部分は結局、文字列で定義しないといけない。
という理由があって、考えた結果、「マクロなら見やすくね?」と思い作りました。
利用方法
実装はストリーム関数を使っています
※ストリーム関数を知らない方は、http://itpro.nikkeibp.co.jp/article/COLUMN/20070117/258941/を参照して下さい。
なので、マクロ機能は、include, require, file_get_contents, fopenで使えるようになります。
ちなみに読込専用です。
マクロ未使用時
include "hoge.php";
マクロ使用時
$opts = array(); $opts['debug'] = true; Stream_Macro::registByArray('macro', $opts); include "macro://hoge.php";
サポートする構文
インクルード
#include [ファイル名]
定義
#define 変数名 値
#define マクロ関数 式
条件
#ifdef 変数名
#if 条件式
#else
#endif
ループ
#for 式
#endfor
#foreach 式
#endforeach
#while 式
#endwhile
インストール
sudo pear install openpear/Stream_Macro
のはずなんですけど、2009/08/31の時点でリリース処理を行ってもリリースされない(メールも来ない)状態なので、
すぐ使ってみたい方は、
sudo pear install http://svn.openpear.org/Stream_Macro/trunk/release/Stream_Macro-0.1.0.tgz
を実行して下さい。
*1
リリースできるようになったらまたご連絡します。
*1:2009/08/31 14時頃リリースされました