https://github.com/nishimura/laiz2
基本方針
- DB設計最優先
- HTML構造優先
- コード量を少なく
大抵の処理はPage(Action)クラスに書く。いわゆるAction肥大化。
もし「この二つのテーブルは大抵joinして取得している」という状況になったらModelを作っても良いが、大抵の場合は一画面ごとに処理がユニークなので共通化できない。
アプリ側はフレームワークの何かを継承してクラスを作ることが基本的にないのでテストする場合はActionクラスをテストすれば良い。
プレゼンテーションロジックがほとんどでビジネスロジックはあまりないという考えに基づく。
DB設計と画面遷移でほぼシステムの設計は決まっていて、コードに書くビジネスロジック的なものはおまけ。
アプリを作る流れ
ふつう
- ER図を書く
- SQLを書いて初期DBを作る
- HTMLを書く
- PHPを書く
- ER図を変更する
- migrationでDBを変更する
- PHPとHTMLを変更する
DB設計優先。
HTML優先。
PHPはDBとHTMLつなぐ手段。
デザイン優先
- html、css、画像などのセットをもらう
- PHPを書く、htmlに変数を埋める
htmlのpathなどの構造は変えない。
元々ある構造にPHPを割り当てていく。
細かい話
- DB設計最優先:フレームワークの制約でDB設計が変わることのないように
- 主キー自由
- リレーション自由
- DB変更はPHPコードで&バージョン管理
- HTML構造優先:フレームワークの制約でHTML構造が変わることのないように
- コード量を少なく:自動で出来るところは自動でやる
- インスタンスの生成はタイプヒンティングから自動で
- DBのテーブル情報をPHPに対応させるところは自動で
- フォームから送られてくる各データをオブジェクトへ詰め替えるのは自動で
- checkbox、selectboxなどの初期値設定は自動で
次に実装するかもしれない機能
- 自動化を進めて更にコード量を少なく
- DB制約から最低限のバリデーションを自動で
- HTML5のフォーム入力チェック構文からバリデーションを自動で
- 構造を変える
- フレームワーク自体の構造を綺麗にする
- フォーム処理の流れがまだしっくり来ない