Laravel8のヘルパ関数で実際に使った使えたものをまとめる
Laravelではグローバルに使える関数が多数あり、それらを使用することにより開発効率や可読性が向上します。
そのため用途にあったものがある場合、積極的に使用するようにしましょう。
以下では用途にまとめてヘルパ関数を記載しています。
パス
mix()
mix
関数は、バージョンつけしたMixファイルのパスを取得します。
$path = mix('css/app.css');
storage_path()
storage_path
関数は、アプリケーションのstorage
ディレクトリへの完全修飾パスを返します。storage_path
関数を使用して、ストレージディレクトリ内の特定のファイルへの完全修飾パスを生成することもできます。
$path = storage_path();
$path = storage_path('app/file.txt');
文字列
Str::lower()
Str::lower
メソッドは指定文字列を小文字に変換します。
use Illuminate\Support\Str;
$converted = Str::lower('LARAVEL');
// laravel
Str::upper()
Str::upper
メソッドは、指定文字列を大文字に変換します。
use Illuminate\Support\Str;
$string = Str::upper('laravel');
// LARAVEL
Str::substr()
Str::substr
メソッドは開始位置と文字列長の引数で指定した部分文字列を返します。
use Illuminate\Support\Str;
$converted = Str::substr('The Laravel Framework', 4, 7);
// Laravel
Str::replace()
Str::replace
メソッドは、文字列内の指定した文字列を置き換えます。
use Illuminate\Support\Str;
$string = 'Laravel 8.x';
$replaced = Str::replace('8.x', '9.x', $string);
// Laravel 9.x
Fluent文字列
Fluent文字列はオブジェクト指向で、複数の文字列操作をチェーンできるインターフェイスを提供しています。
複数の文字列操作をする場合は、自然言語のように記述できるため、コードの可読性が上がります。
Str::of()
の引数に対象の文字列を指定して使用します。
append
append
メソッドは、指定値を文字列へ追加します。
use Illuminate\Support\Str;
$string = Str::of('Taylor')->append(' Otwell');
// 'Taylor Otwell'
contains
contains
メソッドは、指定された文字列に指定された値が含まれているかどうかを判別します。このメソッドは大文字と小文字を区別します。
use Illuminate\Support\Str;
$contains = Str::of('This is my name')->contains('my');
// true
is
is
メソッドは、指定文字列が指定パターンに一致するかどうかを判別します。アスタリスクはワイルドカード値として使用できます
use Illuminate\Support\Str;
$matches = Str::of('foobar')->is('foo*');
// true
$matches = Str::of('foobar')->is('baz*');
// false
trim
trim
メソッドは、文字列をトリムします。
use Illuminate\Support\Str;
$string = Str::of(' Laravel ')->trim();
// 'Laravel'
$string = Str::of('/Laravel/')->trim('/');
// 'Laravel'
when
when
メソッドは指定条件がtrue
の場合、指定したクロージャを呼び出します。クロージャは、fluent文字列インスタンスを受け取ります。
use Illuminate\Support\Str;
$string = Str::of('Taylor')
->when(true, function ($string) {
return $string->append(' Otwell');
});
// 'Taylor Otwell'
必要であれば、3番目のパラメータとして別のクロージャをwhen
メソッドに渡せます。このクロージャは、条件パラメータがfalse
と評価された場合に実行します。
use Illuminate\Support\Str;
$string = Str::of('Steve')
->when(false, function ($string) {
return $string->append(' Otwell');
}, function ($string) {
return $string->append(' Jobs');
});
// 'Steve Jobs'
URL
route()
route
関数は、指定した名前付きルートのURLを生成します。
$url = route('route.name');
ルートがパラメーターを受け入れる場合は、それらを関数の2番目の引数として渡すことができます。
$url = route('route.name', ['id' => 1]);
デフォルトでは、route関数は絶対URLを生成します。相対URLを生成する場合は、関数の3番目の引数としてfalseを渡してください。
$url = route('route.name', ['id' => 1], false);
その他
abort()
abort
関数は、例外ハンドラによりレンダーされるであろう、HTTP例外を投げます。
abort(403);
ブラウザに送信する必要のある例外のメッセージとカスタムHTTP応答ヘッダを指定することもできます。
abort(403, 'Unauthorized.', $headers);
abort_if()
abort_if
関数は、指定された論理値がtrue
と評価された場合に、HTTP例外を投げます。
abort_if(! Auth::user()->isAdmin(), 403);
abort
メソッドと同様に、例外の応答テキストを3番目の引数として指定し、カスタム応答ヘッダの配列を4番目の引数として関数に指定することもできます。
###abort_unless()
abort_unless
関数は、指定した論理値がfalse
と評価された場合に、HTTP例外を投げます。
abort_unless(Auth::user()->isAdmin(), 403);
abort
メソッドと同様に、例外の応答テキストを3番目の引数として指定し、カスタム応答ヘッダの配列を4番目の引数として関数に指定することもできます。
collect()
collect
関数は、指定値からコレクションインスタンスを生成します。
$collection = collect(['taylor', 'abigail']);
logger()
logger
関数は、debugレベルのメッセージをログへ書き出します。
logger('Debug message');
関連情報の配列を関数へ渡すこともできます。
logger('User has logged in.', ['id' => $user->id]);
関数に値を渡さない場合は、ロガーインスタンスが返されます。
logger()->error('You are not allowed here.');
dd()
dd
関数は指定された変数の内容を表示し、スクリプトの実行を停止します。
dd($value);
dd($value1, $value2, $value3, ...);
スクリプトの実行を停止したくない場合は、代わりにdump
関数を使ってください。
###dump()
dump
関数は指定した変数をダンプします。
dump($value);
dump($value1, $value2, $value3, ...);
now()
now
関数は、現時点を表す新しいIlluminate\Support\Carbon
インスタンスを生成します。
$now = now();
optional()
optional
関数はどんな引数も指定でき、そのオブジェクトのプロパティへアクセスするか、メソッドを呼び出せます。指定したオブジェクトがnull
だった場合、エラーを発生させる代わりに、プロパティとメソッドはnull
を返します。
return optional($user->address)->street;
{!! old('name', optional($user)->name) !!}
optional関数は、2番目の引数としてクロージャも受け入れます。最初の引数として指定された値がnullでない場合、クロージャが呼び出されます。
return optional(User::find($id), function ($user) {
return $user->name;
});
参考