Takuji->find;

株式会社はてなでアプリケーションエンジニアやってます、技術的な記事を書いているつもり

Chiffonを書き直した

ChiffonのContainer依存とかその辺が割といけてない感じがしたので、Amon2を参考に書き直してみた

GitHub - takuji31/p5-Chiffon: Web application framework for PSGI/Plack

  • Chiffon::Coreを廃止、一部のユーティリティーメソッドはChiffon::Utilsに移動
  • Containerは非推奨に
  • DispatcherはRouterに名称変更、Dispatcher::Simple相当のモジュールは廃止、Dispatcher::RailsLike相当のものをデフォルトに
  • ContextとChiffon.pmを統合
  • 例外クラスを追加、detachを置き換える
  • トリガー機能をモジュール化

Chiffon::Coreを廃止

useすると勝手にuse strict;use warnings;してくれて、いくつかメソッドをエクスポートしてくれるものだったが、微妙な感じがしたので廃止
メソッドのいくつかはChiffon::Utilsに移動した

Containerは非推奨に

プロジェクトにはContainerが必須だったが、微妙な感じがしたのでry
設定ファイルはChiffon::config()から、ホームディレクトリはChiffon->base_dirから読めるようになっている

DispatcherはRouterに名称変更、Dispatcher::Simple相当のモジュールは廃止、Dispatcher::RailsLike相当のものをデフォルトに

基本的な設計はCakePHPのRouterを参考にした
Router部分のコードはRouter::Simpleを参考にしつつさらにシンプルにした感じ

ContextとChiffon.pmを統合、トリガー機能をモジュール化

ここら辺はAmon2そのままですね、Amon2よりは柔軟性なくなってますが

例外クラスを追加、detachを置き換える

ほげほげしてdetach;してたのはすべてChiffon::Exception::HTTP::なにか で置き換えられるようになっているつもり
固定のヘッダー投げたかったらChiffon::Exception::HTTPを継承したクラスを作るといいです(Flashとか)


前のものよりはきっと使いやすくなってるはずなので、是非使ってもらえると…