FuelPHP&CodeIgniter ユーザの集い #4 に行ってきたよ
東京の勉強会とか楽しそうだなーいいなーと言ってるばかりでは芸がないので遊びに行ってきました。
ついでに以前作りかけで放っておいた CodeIgniter 改善版をいい機会なので終わらせてしまおう、そして発表しようということで喋らせてもらう機会も作っていただきました。感謝。
当日発表したスライドはこちら。
スライドについて、少し解説。
CodeIgniter について
CodeIgniter は数ある PHP フレームワークの中でも(世界的には)群を抜く知名度を持ってるフレームワークです。
仕組みはとにかくシンプルで、それゆえに実行速度、開発速度、学習コストに優れています。
CodeIgniter の落日
そんな CodeIgniter ですが、身売りの問題が発生してリリースが滞っています。github を参照するに開発自体はまぁまぁ活発といえなくもないですが、この問題が解決しない限り 3.0 がリリースされることはないでしょう。
CodeIgniter の欠陥
CodeIgniter には get_instance
という非常に便利な関数があり、この関数は helper や Library 内のクラスから頻繁にコールされています。で、この get_instance
は何をしているかというと実行時にロードされるコントローラのインスタンスを返しています。この仕組みはテスト時に深刻な問題を引き起こしており、結果テストを行うのがめんどくさいことになってます。
だって、 helper ひとつテストするのにコントローラが必要とかわけがわからないよ。
問題を解決する
そんなわけで今作っているフレームワークで種々の問題の解決を試みています。新しいフレームワーク(CodeExploder という名前をつけました)では get_instance ではコントローラではなく Loader を返すようにして、Loader 自体は DI Container を採用しています(Laravel の illuminate/container を採用)。あとは名前空間や Composer 対応、機能が弱い DB 周りを illuminate/database に置き換えるとか日本語に弱いメール周りを swiftmailer/swiftmailer に置き換えるとかそんな感じ。
コンセプトとしては可能な限り後方互換性を維持しつつ、中身はモダン。GW でなにかしら出せればいいなぁと思います。
最後に
飽きるまで頑張ります。