PHP

【CakePHP3】開発するときに知っておきたいCakePHPの規約を解説!!

なぜ規約が必要なのか

そもそもどうしてCakePHPには規約というものがあるのでしょうか。

CakePHPの公式ホームページにも書かれているように、「設定より規約」とまで言われています。

規約を設けることで開発に統一感を出すことができるので、自分以外の開発者が加わった場合でもすぐにプロジェクトに参加することができます。

他人が自己流で書いたコードって想像以上に読みにくいですよね。

個人開発だったとしてもしばらく放置した後に見てみると、意外とコードを理解するのに時間がかかったりするので規約は役に立ちます。

フレームワークを使い始めたときは覚えることが多くて大変ですが、

一度覚えてしまえば普通にコーディングするよりも圧倒的に時間を節約することができます。

ちなみに今回説明するのはCakePHP3の規約で、CakePHP2の規約とは少し異なるので注意しましょう。

覚えておくべき記法

CakePHPの規約を説明する前に、命名するときの記法をおさらいしておきましょう。

知らない人は、これを機に覚えておくといいでしょう。

キャメルケース記法

以下の2種類の記法があります。

1. パスカルケース(アッパーキャメルケース):単語の先頭文字を大文字で表記 ex. ArticlePage

2. キャメルケース(ローワーキャメルケース): 最初の単語だけは小文字だが、それ以降の先頭文字は大文字で表記 ex. articlePage

アンダースコア記法

スネークケースとも、単語の間にアンダースコアを入れる ex. article_page

CakePHP3の規約一覧

あるサービスの有料会員(paying member)に関するページを実装した場合を例にすると、以下のようになる

Viewクラス login.ctp, logout.ctp, add,ctp, delete.ctp など
Controllerクラス PayingMembersController
Tableクラス PayingMembersTable
Entityクラス PayingMember ←Entityはつかない
データベースのテーブル paying_members

これらを詳しく説明していきます。

詳しくはCakePHP3の公式ホームページを見てください。

https://book.cakephp.org/3.0/ja/intro/conventions.html

ビュー(View)の規約

コントローラーの関数名をアンダースコア記法にしたものが表示される。

例1: PayingMembersControllerのlogin()関数は、login.ctpを表示する

例2.同コントローラーのeditName()関数は、edit_name.ctpを表示する

コントローラー(Controller)の規約

コントローラーのクラス名は、複数形+パスカルケース+最後にController というふうになる。

例1. PayingMembersController

例2. UsersController

モデル(TableとEntity)の規約

Tableクラスを命名するときは、複数形+パスカルケース+最後にTable というふうになる。

例1: PayingMembersTable

例2: UsersTable

Entityクラスを命名するときは、単数形+パスカルケース となる

例1: PayingMember

例2: User

TableクラスとEntityクラスで複数形か単数形かの違いがあることと、Entityクラスは最後にEntityがつかないことに注意しましょう。

データベース(テーブルとカラム)の規約

CakePHPではデータベースのテーブルとModelが関連づけられているわけですが、テーブル名は複数形+アンダースコアになります。

例. paying_members

ちなみにフィールド・カラム名については、アンダースコア記法になります。