過去と他人はかえられないが、未来と自分はかえられる このページをアンテナに追加 RSSフィード

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

[]PHPでマクロを使えるようにするライブラリ作りました。 09:59 PHPでマクロを使えるようにするライブラリ作りました。を含むブックマーク 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時頃リリースされました

トラックバック - http://d.hatena.ne.jp/magiwo/20090831
Connection: close