プログラムを書く時、変数の名前をどうしようか迷う
例えば、DBから1件だけ取得して値を代入する時はどういう変数名にしようかとか。
結論
単数形->複数形への変換はStr::plural
複数形->単数形への変換はStr::singular
を使う
※私はこれらをコードの中で使うというより、事前にtinkerで確認することが多いです。
例えば、こんな時
- DBから取得した「スタッフ」(複数存在)を変数に代入する
- tinkerで
Str::plural('staff')
を実行すれば出てきますが、「staffs」という複数形は無いです。従って複数形でも変数名は「staff」になります。
- tinkerで
// 単数形はstaff
$staff = Staff::find(1);
// 複数でもstaff
$staff = Staff::all();
- 実は複数形な「media」
- tinkerで
Str::singular('media')
を実行してみましょう。あら不思議。実は「media」は複数系で、単数形の場合は「medium」なのでした。メディアって有名な単語なので単数でも複数でもこちらを使ってしまいそうです。
- tinkerで
// Modelクラス名が既にアウト
$media = Media::find(1);
// mediasという複数形は無い。(mediaが既に複数形を指している)
$medias = Media::all();
// こうするのが意味としては正しい。勿論、開発現場によってルールがあるとおもうので絶対正解というわけではないが。
$medium = Medium::find(1);
$media = Medium::all();
可読性あるコードを書くためにも、変数名には気を付けましょう。