General

イベントの実装についての考察

2009年12月18日

本題に入る前に…。

sourceforge.jpにおいて、Jeans CMSがプロジェクトの一つとして承認されました。現在開発中のJeans CMSは、SVNレポジトリの閲覧ページで閲覧する事が出来ます。機能がある程度まとまれば、ダウンロードページにファイルを上げる予定です。

さて、Jeansにおいて、プラグイン用のイベントをどのように実装するかについて。Nucleusでは、$manager->notify()というメソッドを用い、プラグインに閲覧させる変数は値渡しで、プラグインに変更を許可する変数は参照渡しとする事により、必要なデータのやり取りをしている。これをもう少し、フレキシブルで簡潔で効率的なやり方に出来ないかと考えている。

一つ思いついたので、ここにメモしておく。それは、イベントを呼び出す側のメソッド内で、evalを行う方法。これだと、コードの実行は呼び出し側のメソッド内のスコープでおこなわれ、すべてが参照渡しのようになる。evalする文字列はcoreクラスから引き渡され、各プラグインはコード文字列をsql tableに登録する形になる。実行されるコードはスタッティクである。ダイナミックに何かを行いたい場合、evalするコードの中でプラグインのメソッドを呼び出せば良い。

evalの多用は、ともすればスピードの低下につながりかねない。が、今の場合だと、簡単なコードの実行の場合、プラグインクラスの呼び出しを行わずに済む場合もあり、むしろスピードアップにつながるかもしれないと考える。

コメント

コメントはありません

コメント送信