cakephp設計の勘所

ishii soft

目次

  1. データベース
  2. コントローラ
  3. モデル
  4. ビュー
  5. その他
  6. 参考

データベース

  • テーブル名は複数形とする。
  • 以下のカラムを定義する。
    • id:プライマリキーとなる。 
    • created:レコード作成時に自動でシステム日時が設定される。
    • modified:レコード更新時に自動でシステム日時が設定される。
  • 他テーブルのidをフィールドに持つ場合、テーブル名(単数形)_idとする。

コントローラ

  • 画面単位でコントローラを作成。
  • ビジネスロジックは書かない。
  • (コントローラを肥大化しない。モデルへ)
  • リクエストパラメータはバリデーションしてもいいかも。
  • (モデルまで行く必要がないから)
  • コントローラ内共通処理はbeforeFilter()で行う。
  • 各メソッド実行前に呼ばれる。
  • 認証処理等、全共通処理はAppController->beforeFilter()で行う。
  • 共通処理はComponentに作成。
  • app/Controllers/Components
    ModelクラスをnewするとComponentからも呼べる。
  • 画面遷移のrenderとredirectの違い
    • renderはビューを表示する。
    • redirectはコントローラを実行。
  • モデルからの例外をcatchして、異常処理スッキリ。

モデル

  • アクション単位でビジネスロジックを行うクラスを作成。
  • テーブル単位でDBアクセスを行うクラスを作成。
  • アソシエーションは複雑なので無理に使わない。
  • (queryで実現できる)
  • 処理異常時は例外を投げてコントローラでエラー処理。
  • 共通処理はapp/Model/Behaviorに作成。
  • 呼び方:$actsAs = array('hoge');

ビュー

  • ヘッダ、フッタはLayouts/default.cppに記述。
  • 共通レイアウトはElementsに作成。
  • 呼び方:$this->Elements();
  • パスを含むタグはHTMLヘルパーで出力。
  • フォーム関連タグはFormヘルパーで出力。
  • ロジックを極力含めないよう留意すること。

その他

  • コアコンポーネント(コントローラから利用できる標準機能)
    • ACL:権限制御
    • Auth:認証
    • Cookie:クッキー制御
    • RequestHandler:アクセス検出
    • Pagination:ページャ
    • Security:セキュリティ
    • Session:セッション管理
  • コアライブラリ(モデルから利用できる標準機能)
    • App:クラスの読み込み
    • Cache:キャッシュ管理
    • CakeEmail:メール送信処理
    • CakeNumber:数値の書式変換処理
    • CakeTime:時間の書式変換処理
    • Sanitize:危険文字列の変換処理
    • Folder:フォルダ操作
    • File:ファイル操作
    • HttpSocket:HTTP通信
    • Inflector:単数形、複数形、テーブル名などの変換
    • CakeLog:ログ操作
    • Router:ルーティング、URL生成
    • Security:ハッシュ処理
    • Hash:連想配列操作
    • String:文字列操作
    • Xml:XML操作
  • コントローラ、モデルから呼べる共通処理
  • /app/Vendorに作成
    呼び方;App::import('Vendor', 'hoge');

参考

Made with Slides.com