PHP5内製フレームワークを拡張した雑感、Net_URL_Mapper ほか

この間、社内勉強会で、「PHPの内製フレームワークを拡張した雑感」みたいなことを話しました。こちらにその内容を書こうと思います。

ツッコミやアドバイスなどありましたら、お気軽にメッセージなど頂ければと思います。あ、Twitter id は kumamidori です。

Net_URL_Mapper

URLのルール設計が重要。convention over configuration の原則を外すと、楽ができず、工数UPする。

■楽々なURL設計の例(convention)

/[モジュール名]/[アクション名]/[パラメータ]

例:東京都の学校一覧画面

 /school/list/tokyo

マッピングしたいのは、

schoolディレクトリ配下のListActionクラス。

 → これなら、解析したURLパラメータからそのまま生成オブジェクトを自動的に決定できるから楽。


工数UPなURL設計の例(configuration)

/固定文字列/[検索用パラメータ]

例:東京都の学校一覧画面

/schoollist/tokyo

マッピングしたいのは、

schoolディレクトリ配下のListActionクラス。

 → これだと、解析したパラメータからそのまま生成オブジェクトを決定することはできない。たとえば、

if($param1 == 'schoollist')
{
  $moduleName = 'school';
  $actionName = 'List';
}

のような、判定処理用の設定を、画面を追加するごとにいちいち追加してやる必要がある。

  • 実務では、顧客要望で後者になり、ベタに設定地獄&if文でお茶を濁してしまいました。

ロガー「Log4PHP

  • 良いと思ったところ
    • 設定が簡単。高機能。
  • 難儀したところ
    • PHP5の環境で試したら、大量の E_STRICT エラーが出た。
    • PHP5環境でPEAR等の「PHP4互換ライブラリ」を使う場合は、error_reporting を甘く設定するか、もしくはPHP5ベースのライブラリだけで固めるかするケースが多いのではないかと思う。
    • そういう意味では、最初からPHP5で作ってあるフルスタックフレームワークを使う方が楽かもしれない?
    • 実務では、結局、別物の内製ロガークラスを流用することにした。

デバッグ用のパラメータビュー

SQLログビュー

実装ではない話

ディスカッションしているときに、ふと、「なんかつまったときに、気軽に聞ける場所が欲しいってことですよね。」とのまとめ発言あり。そーなんですよね〜(汗)と思ったけれど、どうしたら良いのかはよくわからず。