CakePHP2 命名規則
?
CakePHP の命名規則は非常に重要です。CakePHP フレームワークの命名規則に従うことで、フレームワークにさまざまな関数を組み込むことができます。 CakePHP2 のリリース後、命名規則は古いフレームワークと変わりません。この記事は CakePHP 2.x と CakePHP 1.x の両方のフレームワークに適用されます。
一般に、 はファイル名にアンダースコアを使用し、クラス名にはキャメルケース を使用します。たとえば、MyNiftyClass クラスに対応するファイル名は my_nifty_class.php です。以下は、さまざまなタイプのクラスとそれに対応するファイル命名メソッドの例です。
コントローラー クラス KissesAndHugsController は、kisses_and_hugs_controller.php ファイルにあります (ファイル名の _controller に注意してください)。
コンポーネント クラス MyHandyComponent は、my_handy.php ファイルにあります。
モデル クラス OptionValue は、option_value.php ファイルにあります。
動作クラス SpeciallyFunkableBehavior は、specially_funkable.php ファイルにあります。
ビュー クラス SuperSimpleView は、super_simple.php ファイルにあります。
ヘルパー クラス BestEverHelper は、best_ever.php ファイルにあります。
上記の各ファイルは、対応するフォルダーに保存されます。
概要: クラス名では、モデル クラスを除き、コントローラー、コンポーネント、ビヘイビアーなど、クラスの ID をクラス名でマークする必要があります。ファイル名では、コントローラー クラスのみを識別する必要があります。つまり、ファイルの最後に _controller.
を追加します。モデルのクラス名には、単数形のキャメルケース命名 が使用されており、これはすべて従来のモデルの命名です。
テーブル名には複数の数字とアンダースコア を使用して名前を付ける必要があります。上記のモデルに対応するテーブル名は、people、big_people、really_big_people です。
「屈折語」ライブラリを使用して、単語の単数形と複数形を確認できます。
first_name など、アンダースコアで名前が付けられた 2 つ以上の単語を含むフィールド名。
hasMany、belongsTo、および hasOne 関係では、外部キーはデフォルトで関連テーブルに _id を加えたもので表されます。たとえば、Baker と Cake の関係が 1 対多の場合、cakes テーブルに baker_id 外部キーがあり、Bakes テーブルと関連付けられます (ここで関連付けられている外部キーは単数であることに注意してください)。 category_types など、複数の単語で構成されるテーブル名の場合、外部キーは category_type_id になります。つまり、テーブル名は複数形ですが、他のテーブルに存在するこのテーブルの外部キーは単数形で名前を付ける必要があります。
一般に、リンク テーブルは多対多の関係にあります。リンク テーブルのフィールドに名前を付ける 1 つの方法は、リンク テーブル内でフィールドをアルファベット順に配置することです。 zebras_apples ではなく、 apples_zebras です。
CakePHP モデルが対話するすべてのテーブルには、データの各行を識別するための一意の主キーが必要です。 CakePHP は複合主キーをサポートしていません。リンクされたテーブルのデータを直接操作したい場合は、SQL ステートメントを直接使用できます。
増分フィールドを主キーとして使用することに加えて、char(36) を主キーとして使用することもできます。 odel::save メソッドを使用してレコードを保存すると、CakePHP はこのフィールドを自動的に認識し、(String::uuid) を使用して 36 ビット文字列を一意の主キーとして生成します。
コントローラのクラス名は複数のキャメルケースを使用し、Controllerで終わります。 PeopleController とlatestArticlesControlle はどちらも正当なコントローラーの命名方法です。
コントローラーの最初のメソッドは、index() メソッドである必要があります。リクエストでコントローラーのみが指定され、アクション メソッドが指定されていない場合、CakePHP はデフォルトでコントローラーの Index() メソッドを実行します。
コントローラー メソッド名の前にアンダースコアを追加することで、コントローラー メソッドの表示スコープを変更できます。コントローラー メソッドの前にアンダースコアが付いている場合、そのメソッドは内部でのみ使用可能であり、ブラウザーからはアクセスできません。
単一単語のコントローラーは、小文字の URL に簡単にマッピングできます。たとえば、ApplesController には http://example.com/apples からアクセスできます。
マルチワード コントローラのアクセス アドレスは、コントローラ名を任意に変形したものにすることができます。
はすべて、RedApples コントローラーのインデックス メソッドを指すことができます。ただし、命名規則では、URL アドレスは小文字の単語とそれに続くアンダースコアで構成する必要があると規定されています。したがって、/red_apples/go_pick は RedApplesController::go_pick メソッドをリクエストする正しい形式です。
ビュー テンプレート ファイルの名前は、コントローラー メソッドを呼び出すことによって付けられます。複数の単語はアンダースコアで区切られます。 PeopleController クラスの getReady() メソッドは、/app/views/people/get_ready.ctp ビュー テンプレートに自動的に関連付けられます。
命名方法は /app/views//.ctp です。
データベース テーブル名: people
モデル クラス: person、パス app/models/person.php
コントローラー クラス: PeopleController、パス app/contollers/people_controller.php
ビュー クラス: app/views / people/index.ctp
この命名規則を使用すると、CakePHP は http://example.com/people/ を PeopleController コントローラーの Index() メソッドにマップすることができ、コントローラー内で Person モデルを直接使用でき、モデルは自動的に使用されます。 people テーブルがバインドされてからビューが出力されます。 CakePHP の命名規則に従っている限り、これらすべてを構成する必要はありません。