この記事では、Laravelの変数やメソッドなどの命名規則に関して解説します。
命名規則とは
プログラミングを行う際にソースコード上の識別子の名称のルールを定めたもの。ネーミング規則、ネーミング規約、あるいは命名規約とも呼ばれます。通常は、ソースコードの可読性や視認性の向上、プログラミング効率およびメンテナンス性の改善などを目的としています。
代表的な記法
UpperCamelCaseアッパーキャメルケース
単語の先頭を大文字に、それ以外は小文字にして連結させた文字列。
lowerCamelCaseローワーキャメルケース
アッパーキャメルケースの先頭のみを小文字にした文字列。
snake_caseスネークケース
単語を全て小文字にしてアンダースコア「_」で連結させた文字列。
CONSTANT_CASEコンスタントケース
スネークケースの全ての文字を大文字にした文字列。
kebab-caseケバブケース
スネークケースの区切り文字をハイフン「-」にした文字列。
Laravelの命名規則
Laravelではクラス名やDBのテーブル名などの機能ごとに異なった命名規則があります。
命名規則に従わない場合は、個別に設定したりする必要が出てくるので、特に理由がない限り従っておいた方が良いです。
DB
テーブル名
snake_caseで複数形。中学校で習う〜s・〜es・〜iesに変化するもので問題ないです。
不規則変化にも対応しています。
中間テーブル名
多対多の中間テーブル名は、両方のテーブル名の単数形をアルファベット順にアンダースコア「_」でつなげたものになります。いわゆるsnake_case。
プライマリーキーのカラム名
通常はid
固定です。
外部キーのカラム名
外部キーのカラム名はテーブル名の単数形の後ろに「_id」を付けたものです。
モデル
モデル名
UpperCamelCaseで単数形。
リレーション名(hasOneまたはbelongsTo)
LowerCamelCaseで単数形。
リレーション名(hasMany, belongsToMany, hasManyThrough)
LowerCamelCaseで複数形。
コントローラ・シーダーなどの機能名
UpperCamelCase + 機能名
コントローラのメソッド名
通常のCRUD操作では、以下のメソッド名のいずれかを使用した方が分かりやすいです。
動作 | URI | メソッド名 | Route名 |
---|---|---|---|
GET | /photos | index() | photos.index |
GET | /photos/create | create() | photos.create |
POST | /photos | store() | photos.store |
GET | /photos/{photo} | show() | photos.show |
GET | /photos/{photo} | edit() | photos.edit |
PUT/PATCH | /photos/{photo} | update() | photos.update |
DELETE | /photos/{photo} | delete() | photos.delete |
Bladeファイル名
snake_caseで、拡張子がblade.php
。
PSR-2
Laravelのコーディング規約はPSR-2(本家(英語))が基本となっています。
こちらではクラス名などは以下の通りとなっています。
クラス名
UpperCamelCase
メソッド名
lowerCamelCase
定数名
CONSTANT_CASE
変数名
意図的に明言されていませんがlowerCamelCaseが好ましいでしょう
まとめ
表にまとめると以下のようになります。
記法 | 例 | |
---|---|---|
DBのテーブル名 | スネークケース(複数形) | table_names |
中間テーブル名 | スネークケース(単数形) | shop_cateogry |
外部キーカラム | スネークケース + _id | shop_id |
モデル名 | アッパーキャメルケース(単数形) | TableName |
各種機能名 | アッパーキャメルケース + 機能名 | AnyController, TableNameSeeder, TableNameFactory |
クラス名 | アッパーキャメルケース | ClassName |
メソッド名 | ローワーキャメルケース | methodName |
定数名 | コンスタントケース | CONSTANT_NAME |
変数名 | ローワーキャメルケース | $variableName |
コメント