PHPでマクロを使えるようにするライブラリ作りました。

名前はStream_Macroです。
C言語のようにマクロ機能が使えるようになります。

 http://openpear.org/package/Stream_Macro

作成理由

元々既存のPHPファイルやテンプレートファイルを雛形にしてソース生成したいと思ったけど、
既存のテンプレートエンジンやジェネレータを以下の問題があって断念しました。

  1. テンプレートファイル雛形をテンプレートエンジンで記述するとわけわかめになる。
  2. PHPで直書いても良いけど今度は、PHPコードが生成前に使うコードか、生成後に使うコードか、わけわかめになる。
  3. 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時頃リリースされました