新・リハビリ日記

技術メモとか

CakePHP2の規約、自動マッピング

[CakePHPの規約|http://book.cakephp.org/2.0/ja/getting-started/cakephp-conventions.htm]

サマリ

各部分をCakePHPの規約に合わせて命名しておくことで、混乱を招く面倒な設定をしなくても機能的に動作するようになります。 以下が最後の規約に合った命名の例です

データベースのテーブル: “people”
モデルクラス: “Person”、 場所は /app/Model/Person.php
コントローラクラス: “PeopleController”、 場所は /app/Controller/PeopleController.php
ビューのテンプレート、場所は /app/View/People/index.ctp

これらの規約により、CakePHPは、http://example.com/people/ へのリクエストを、PeopleControllerのindex()関数にマップします。 そして、Personモデルが自動的に使える(データベースの’people’テーブルに自動的に接続される)ようになり、表示されることになります。 必要なクラスとファイルを作成しただけでこれらの関係が設定されています。

コントローラ / URL

  • クラス名は複数形でキャメル記法で、最後に Controller をつける
  • リクエストによってコントローラは指定されたがアクションは指定されなかったという場合、CakePHP のデフォルト動作では、そのコントローラの index() メソッドを実行する
  • コントローラ関数名の先頭にアンダースコア(_)を付ける or private とすることで、CakePHP のコントローラメソッドを隠蔽することが可能
  • URL は小文字とアンダースコアを用いる。URLとコントローラの自動マッピングは /コントローラ名/アクション名 となる

モデル / データベース

ビュー

  • ビューのテンプレートファイルは、それを表示するコントローラの関数に合わせた、アンダースコア記法
  • PeopleControllerクラスのgetReady()関数は、ビューテンプレートとして、/app/views/people/get_ready.(ctp|php)を探す
  • 基本パターンは /app/views/コントローラ名/アンダースコア記法_関数名.ctp

ファイル名

  • ファイル名はクラス名にマッチしたものになり、キャメルケースとする(コントローラ:複数形, モデル / ビュー : 単数形)