(2)で特定したファイルをAspectをかませるように書き換えて、「components_c」に出力する。この際、「Zoo」クラスとなっている場合には「Foo_Bar_Zoo」に書き換えてしまう。
Aspectかませて書き換え!
その後、生成したファイルをunlink()すれば、メモリ上(?)にクラスファイルが読み込まれたされた状態になって、いつでも new できるって状態になってます。(詳しくはソース読んで :p)
includeして削除しちゃうって考えが面白い!
PHPでもコードインジェクションやコードジェネレーションの波が。
厭な感じを持たれる方もいるかもしれませんが、どんどんやっていーんです!
軽快なJavaに感化される。特にためになったのが、透明性を確保するための方法について。つまりアプリケーションの各ドメインがそれぞれ独立して他に依存しないようにする方法。ぱっと考えてそんなことできるのかと思いましたが、現在主流になってる方法は
- リフレクション
(きたオブジェクトに動的に対応)- コードインジェクション
(Build時にAntで自動的にコードを付け加える)- コードジェネレーション
(コード自体を生成する)