Jeans CMS 製作日記:
Deprecated: Function strftime() is deprecated in /home/u109394186/domains/rad51.net/public_html/jeans/jeans/libs/blog.php on line 333
2009年 12月の記事
イベントの実装についての考察 [General]
2009年12月18日
本題に入る前に…。
sourceforge.jpにおいて、Jeans CMSがプロジェクトの一つとして承認されました。現在開発中のJeans CMSは、SVNレポジトリの閲覧ページで閲覧する事が出来ます。機能がある程度まとまれば、ダウンロードページにファイルを上げる予定です。
さて、Jeansにおいて、プラグイン用のイベントをどのように実装するかについて。Nucleusでは、$manager->notify()というメソッドを用い、プラグインに閲覧させる変数は値渡しで、プラグインに変更を許可する変数は参照渡しとする事により、必要なデータのやり取りをしている。これをもう少し、フレキシブルで簡潔で効率的なやり方に出来ないかと考えている。
一つ思いついたので、ここにメモしておく。それは、イベントを呼び出す側のメソッド内で、evalを行う方法。これだと、コードの実行は呼び出し側のメソッド内のスコープでおこなわれ、すべてが参照渡しのようになる。evalする文字列はcoreクラスから引き渡され、各プラグインはコード文字列をsql tableに登録する形になる。実行されるコードはスタッティクである。ダイナミックに何かを行いたい場合、evalするコードの中でプラグインのメソッドを呼び出せば良い。
evalの多用は、ともすればスピードの低下につながりかねない。が、今の場合だと、簡単なコードの実行の場合、プラグインクラスの呼び出しを行わずに済む場合もあり、むしろスピードアップにつながるかもしれないと考える。
sourceforge.jpにおいて、Jeans CMSがプロジェクトの一つとして承認されました。現在開発中のJeans CMSは、SVNレポジトリの閲覧ページで閲覧する事が出来ます。機能がある程度まとまれば、ダウンロードページにファイルを上げる予定です。
さて、Jeansにおいて、プラグイン用のイベントをどのように実装するかについて。Nucleusでは、$manager->notify()というメソッドを用い、プラグインに閲覧させる変数は値渡しで、プラグインに変更を許可する変数は参照渡しとする事により、必要なデータのやり取りをしている。これをもう少し、フレキシブルで簡潔で効率的なやり方に出来ないかと考えている。
一つ思いついたので、ここにメモしておく。それは、イベントを呼び出す側のメソッド内で、evalを行う方法。これだと、コードの実行は呼び出し側のメソッド内のスコープでおこなわれ、すべてが参照渡しのようになる。evalする文字列はcoreクラスから引き渡され、各プラグインはコード文字列をsql tableに登録する形になる。実行されるコードはスタッティクである。ダイナミックに何かを行いたい場合、evalするコードの中でプラグインのメソッドを呼び出せば良い。
evalの多用は、ともすればスピードの低下につながりかねない。が、今の場合だと、簡単なコードの実行の場合、プラグインクラスの呼び出しを行わずに済む場合もあり、むしろスピードアップにつながるかもしれないと考える。