ヘルパー関数とは
Laravelは多数のグローバルPHP関数(ヘルパー)を提供しています。フレームワーク自体が内部で使用しているものがほとんどですが、アプリケーション内でも自由に利用できます。 ヘルパーは大きく以下のカテゴリに分かれています。- 配列・オブジェクト —
Arr::クラスとdata_get()などの関数 - 数値 —
Number::クラス - パス —
app_path(),storage_path()などのパス取得関数 - URL —
route(),url(),asset()などのURL生成関数 - その他 —
config(),collect(),auth()などよく使うユーティリティ
ヘルパー関数は
use 宣言不要でどこからでも呼び出せます。Arr や Number クラスを使う場合は use Illuminate\Support\Arr; などのインポートが必要です。配列ヘルパー(Arr クラス)
Arr::get() — ドット記法でネストした値を取得
多次元配列からドット記法(foo.bar.baz)でネストした値を安全に取得します。キーが存在しない場合はデフォルト値を返します。
Arr::set() — ネストした配列に値を設定
Arr::has() — キーの存在を確認
Arr::only() / Arr::except() — キーを絞り込む・除外する
リクエストデータや設定配列から必要なキーだけを取り出したり、不要なキーを除外したりするときに便利です。
Arr::pluck() — ネストした配列から特定キーを抜き出す
Arr::first() / Arr::last() — 条件を満たす最初・最後の要素
Arr::flatten() — 多次元配列を1次元に平坦化
Arr::wrap() — 値を確実に配列にする
値が配列でない場合に配列でラップします。null は空配列になります。関数の引数を柔軟に受け付ける際に役立ちます。
Arr::sort() — 値でソート
Arr::dot() / Arr::undot() — ドット記法に変換・復元
Arr::join() — 配列を文字列に結合
data_get() — ネストしたデータへのアクセス
Arr::get() の汎用版です。配列だけでなく、オブジェクトやEloquentモデル、コレクションにも対応しています。
数値ヘルパー(Number クラス)
Number::format() — 数値を読みやすい形式に
Number::currency() — 通貨フォーマット
Number::fileSize() — ファイルサイズを人間が読める形式に
Number::abbreviate() — 大きな数を省略表記に
Number::percentage() — パーセント表示
パスヘルパー
アプリケーション内のディレクトリパスを取得します。環境やデプロイ先が変わっても正しいパスを返します。URLヘルパー
route() — 名前付きルートのURL生成
url() — 任意パスの絶対URL生成
asset() — 静的アセットのURL生成
to_route() — 名前付きルートへのリダイレクト
その他のよく使うヘルパー
config() — 設定値の取得・設定
collect() — コレクションの作成
auth() — 認証ユーザーの取得
blank() / filled() — 空チェック
blank() は null, 空文字, 空白のみ, 空のコレクション・配列を true とみなします。filled() はその逆です。
abort() / abort_if() / abort_unless() — HTTP例外
dd() / dump() — デバッグ
dispatch() — ジョブをキューに投入
encrypt() / decrypt() — 暗号化
env() — 環境変数の取得
collect() との使い分け
Arr:: クラスは通常のPHP配列を対象にした操作、collect() はコレクションオブジェクトを返す操作です。
Eloquentの結果は自動的にコレクションとして返るため、
collect() で包む必要はありません。単純な配列操作で十分な場合は Arr:: を使うとシンプルに書けます。まとめ
よく使うヘルパー一覧
よく使うヘルパー一覧
Arr クラス vs collect()
Arr クラス vs collect()
Arr:: クラスを使う場面:- 単純な配列操作(ネストしたキーへのアクセス、キーの絞り込みなど)
- コレクションオブジェクトのオーバーヘッドが不要な場合
- 結果を配列のまま扱いたい場合
collect() を使う場面:- 複数の操作をメソッドチェーンで表現したい場合
- Eloquentの結果をさらに加工する場合(既にコレクション)
map,filter,groupByなどコレクション固有のメソッドを使いたい場合