今日、明日も休みを取ったので9連休

っで、手持ちソースの整理なんかをしていたり(・ω・)
とりあえず、PHP版我々フレークワークのリファクタリングをしてみたりとか。


まあ、今時我々フレークワークなんてどうかと思わないでもないし、CakePHPで良いジャンとも思うわけですが(´д`;)。*1
でも、一般論として、フレームワークの生産性の高さと適用範囲の広さは反比例するので。
フレームワークオリエンテッドで作れないケースで、そこに無理矢理フレームワークを適用してはまったりすることを考えれば、既存のフレームワークとは別に、我々フレークワークを用意する意味が無いわけでもないと言ってみる(・∀・)
面倒な処理はPEARやZendをライブラリで使うとして、後は薄くて見通しが良く、かつ学習コストの低いグルーな層を我々フレームワークとして用意すれば、それはそれで便利に使えるかな、っと(´∀`)



っで、とりあえず作業が完了したのは、VC層、ビューヘルパー、ユーティリティー、DBを使わないコンポーネントのあたり。
モデル周りについては、後で.NETやJava版も作ることを考えたり、実験的な事もしてみたいので、そこは時間をかけることにして。
それが出来るまでは、旧版のDBライブラリを使用する方向で(・ω・)


VC層については、ASP.NET MVCの影響が出たかな〜、っという感じ(´д`;)
元々あった処理から、モノシリックだった部分をバラして、拡張ポイントを追加してという感じなので、大枠はあまり変わっていないのですが。


改版にあたっては、ビューの所が一番ASP.NET MVCの影響を受けているかな(・∀・)?
標準のPHPを使ったレンダリングの他に、ファイルダウンロードやリダイレクトなんかの処理も同じ扱いにして。
この方式なら、Ajax用のJsonXMLを使ったビューだとか、ビューの種類の追加も簡単だし。


フィルタ類については、元々Controller(ControllerInvoker)にあった処理のほとんどをフィルタとして実装するようにしてみたり。
まあ、フィルタの多くは、変数アノテーションを使って、パラメータのインジェクションをするようなものだけど(・ω・)
インジェクション系以外のものとしては、SubmitOnFilter(form内に複数submitがあった時のアクションメソッドの切り替え)やDefaultRendarFilter(アクションメソッドでビュークラスを返すのをサボった時にデフォルトビューを生成)だとか。


後はバインダー。
よく考えたら、ASP.NET MVCのModelBinderと似たような機構を、PHP版の我々フレークワークでも持っていまスタ(´д`;)
まあ、当然と言えば当然で、入力パラメータからモデルの構築なんていうのは、定型化すべき処理の筆頭なので。
っで、ここも元々あった処理をバラして、特殊な所をExtensionとして分離してみたり。
Extensionの例としては、年、月、日の複数のinputをまとめて1つの値にするだとか、そんな処理。


ってな感じで、モデルとモデルを使うコンポーネント以外については大体作業も完了。
時間のかかりそうな所は後回しにして、次はWindows CEフレームワークの整理でもしてみようかな(・∀・)?

*1:っというか、劣化Cakeみたいなものを作っている気がしないでもないし(´д`;)