PHPのフレームワーク再考
2006年からLaizを作り始めたわけだけれど、普通に利用する機能と実験的機能がごちゃ混ぜでフレームワークが肥大化している。
特に、PHP5.3用に変更したときにPHP4のコードをそのまま持ってきたり新しい仕組みを取り入れたりしてちょっと見づらいコードになった。
既に受託案件などで何度も使っているので主要機能についてはバグがあるとか動作がおかしいとかいうことはない。
でもいくつか使いにくい点というかもっと効率のいい方法があるんじゃないかと思うようになってきた。
変えたい部分は以下
- 設定を柔軟にしすぎた。結局使い方は2パターンくらいになる。
- 最初にPHPの全ファイルを読み込む
- 配列からオブジェクトへ
- PHP4の配列メインの構造からPHP5のオブジェクトメインの構造へ完全に変更できていない
で、結局これらを変更しようと思うと全体的な構成を変えないといけない。
もっと単純に、必要な機能だけを実装してシンプルでも使い勝手の良いものを作りたい。
フレームワークにやってほしいことって何だろうと改めて考えつつ書き出す。
この四つ、これだけあればいい。
それぞれ具体的に書くと
- フロントコントローラーとURLマッピング
- リクエスト変換
- 配列をオブジェクトに変換
- 全角を半角にするなどの共通処理
- フォーム入力チェック
- 一般的なバリデーション
- 共通処理
- フィルターなどと呼ばれるもの
- ログインやヘッダーフッターなどの共通処理をまとめる
このくらい。
おそらくURLマッピングとディレクトリ・ファイル構造がそのフレームワークの特徴の大部分を占めるのではないかと。
各種コンポーネントの取得方法や値の設定方法もそれぞれ特徴があるけれど、それは付随的な機能というかヘルパー的な、お助け機能。
まぁ大抵の場合はフレームワークの設定で任意のURLマッピングとディレクトリ構造にできるのだろうけれど。
それから必須のライブラリとして
- DB
- テンプレートエンジン
がある。
これはTsukiyoとYokazeまたはFlexyを多少変更して使おうかと。
あると嬉しいライブラリとしては
- メール送信
- ファイルアップロード
- 権限管理
- セッション管理
- トランザクション管理
- テスト補助
など。これらは既にあるものから選んで使うか100行くらいなら自分で書く。
多数のファイルを読み込んで様々な構成に対応するっていうのは無しの方向で。
最近のフレームワークってどうなってるんだろうと思って Zend Framework 2 のチュートリアルをやってみた。
http://framework.zend.com/manual/2.1/en/user-guide/skeleton-application.html
データベース1テーブルの操作するだけなのに、これは疲れる。
http://d.hatena.ne.jp/noopable/20121025
フレームワークの仕組みとしては、この辺を読むと使ってみたい気もする…。
http://www.nosenaoki.net/category/zf2/
こちらを読みつつ、使えるところを使いつつ薄いラッパーを書こうか考え中。