[Laravel]Laravelの命名規則

Laravel Laravel

この記事では、Laravelの変数やメソッドなどの命名規則に関して解説します。

命名規則とは

プログラミングを行う際にソースコード上の識別子の名称のルールを定めたもの。ネーミング規則、ネーミング規約、あるいは命名規約とも呼ばれます。通常は、ソースコードの可読性や視認性の向上、プログラミング効率およびメンテナンス性の改善などを目的としています。

代表的な記法

UpperCamelCaseアッパーキャメルケース

単語の先頭を大文字に、それ以外は小文字にして連結させた文字列。

lowerCamelCaseローワーキャメルケース

アッパーキャメルケースの先頭のみを小文字にした文字列。

snake_caseスネークケース

単語を全て小文字にしてアンダースコア「_」で連結させた文字列。

CONSTANT_CASEコンスタントケース

スネークケースの全ての文字を大文字にした文字列。

kebab-caseケバブケース

スネークケースの区切り文字をハイフン「-」にした文字列。

Laravelの命名規則

Laravelではクラス名やDBのテーブル名などの機能ごとに異なった命名規則があります。
命名規則に従わない場合は、個別に設定したりする必要が出てくるので、特に理由がない限り従っておいた方が良いです。

DB

テーブル名

snake_caseスネークケースで複数形。中学校で習う〜s・〜es・〜iesに変化するもので問題ないです。
不規則変化にも対応しています。

中間テーブル名

多対多の中間テーブル名は、両方のテーブル名の単数形をアルファベット順にアンダースコア「_」でつなげたものになります。いわゆるsnake_caseスネークケース

post_user, category_product, category_shop, etc...

posts_users, CategoryProduct, shop_category

プライマリーキーのカラム名

通常はid固定です。

外部キーのカラム名

外部キーのカラム名はテーブル名の単数形の後ろに「_id」を付けたものです。

user_id, shop_id

モデル

モデル名

UpperCamelCaseアッパーキャメルケースで単数形。

テーブル名が命名規則に対応していない場合は、モデル内でテーブル名の指定をする必要があります。

リレーション名(hasOneまたはbelongsTo)

LowerCamelCaseローワーキャメルケースで単数形。

public function user(), public function postAuthor()

リレーション名(hasMany, belongsToMany, hasManyThrough)

LowerCamelCaseローワーキャメルケースで複数形。

public function categories(), public function roles()

コントローラ・シーダーなどの機能名

UpperCamelCaseアッパーキャメルケース + 機能名

機能名はコントローラならController、シーダーならSeeder、ファクトリならFactoryといったもの。
厳密には従う必要はないが、モデル名などの設定をコード中に記載する必要があるため、従った方が良い。

コントローラのメソッド名

通常のCRUD操作では、以下のメソッド名のいずれかを使用した方が分かりやすいです。

動作URIメソッド名Route名
GET/photosindex()photos.index
GET/photos/createcreate()photos.create
POST/photosstore()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

all_posts.blade.php

PSR-2

Laravelのコーディング規約はPSR-2(本家(英語))が基本となっています。
こちらではクラス名などは以下の通りとなっています。

クラス名

UpperCamelCaseアッパーキャメルケース

メソッド名

lowerCamelCaseローワーキャメルケース

定数名

CONSTANT_CASEコンスタントケース

変数名

意図的に明言されていませんがlowerCamelCaseローワーキャメルケースが好ましいでしょう

まとめ

表にまとめると以下のようになります。

記法
DBのテーブル名スネークケース(複数形)table_names
中間テーブル名スネークケース(単数形)shop_cateogry
外部キーカラムスネークケース + _idshop_id
モデル名アッパーキャメルケース(単数形)TableName
各種機能名アッパーキャメルケース + 機能名AnyController, TableNameSeeder, TableNameFactory
クラス名アッパーキャメルケースClassName
メソッド名ローワーキャメルケースmethodName
定数名コンスタントケースCONSTANT_NAME
変数名ローワーキャメルケース$variableName
Laravelの命名規則

コメント

タイトルとURLをコピーしました