ヘルパー
はじめに
Laravelには、グローバルな「ヘルパー」PHP関数が多数含まれています。これらの関数の多くはフレームワーク自体で使用されますが、便利だと思う場合は、ご自身のアプリケーションで自由に使用できます。
利用可能なメソッド
配列とオブジェクト
Arr::accessible Arr::add Arr::collapse Arr::crossJoin Arr::divide Arr::dot Arr::except Arr::exists Arr::first Arr::flatten Arr::forget Arr::get Arr::has Arr::hasAny Arr::isAssoc Arr::isList Arr::join Arr::keyBy Arr::last Arr::map Arr::mapSpread Arr::mapWithKeys Arr::only Arr::pluck Arr::prepend Arr::prependKeysWith Arr::pull Arr::query Arr::random Arr::set Arr::shuffle Arr::sort Arr::sortDesc Arr::sortRecursive Arr::take Arr::toCssClasses Arr::toCssStyles Arr::undot Arr::where Arr::whereNotNull Arr::wrap data_fill data_get data_set data_forget head last
数値
Number::abbreviate Number::clamp Number::currency Number::defaultCurrency Number::defaultLocale Number::fileSize Number::forHumans Number::format Number::ordinal Number::pairs Number::percentage Number::spell Number::trim Number::useLocale Number::withLocale Number::useCurrency Number::withCurrency
パス
URL
その他
abort abort_if abort_unless app auth back bcrypt blank broadcast cache class_uses_recursive collect config context cookie csrf_field csrf_token decrypt dd dispatch dispatch_sync dump encrypt env event fake filled info literal logger method_field now old once optional policy redirect report report_if report_unless request rescue resolve response retry session tap throw_if throw_unless today trait_uses_recursive transform validator value view with when
配列とオブジェクト
Arr::accessible()
Arr::accessible
メソッドは、指定された値が配列アクセス可能かどうかを判断します。
use Illuminate\Support\Arr;use Illuminate\Support\Collection; $isAccessible = Arr::accessible(['a' => 1, 'b' => 2]); // true $isAccessible = Arr::accessible(new Collection); // true $isAccessible = Arr::accessible('abc'); // false $isAccessible = Arr::accessible(new stdClass); // false
Arr::add()
Arr::add
メソッドは、指定されたキーが配列にまだ存在しない場合、またはnull
に設定されている場合に、指定されたキーと値のペアを配列に追加します。
use Illuminate\Support\Arr; $array = Arr::add(['name' => 'Desk'], 'price', 100); // ['name' => 'Desk', 'price' => 100] $array = Arr::add(['name' => 'Desk', 'price' => null], 'price', 100); // ['name' => 'Desk', 'price' => 100]
Arr::collapse()
Arr::collapse
メソッドは、配列の配列を単一の配列に折りたたみます。
use Illuminate\Support\Arr; $array = Arr::collapse([[1, 2, 3], [4, 5, 6], [7, 8, 9]]); // [1, 2, 3, 4, 5, 6, 7, 8, 9]
Arr::crossJoin()
Arr::crossJoin
メソッドは、指定された配列をクロス結合し、可能なすべての順列のデカルト積を返します。
use Illuminate\Support\Arr; $matrix = Arr::crossJoin([1, 2], ['a', 'b']); /* [ [1, 'a'], [1, 'b'], [2, 'a'], [2, 'b'], ]*/ $matrix = Arr::crossJoin([1, 2], ['a', 'b'], ['I', 'II']); /* [ [1, 'a', 'I'], [1, 'a', 'II'], [1, 'b', 'I'], [1, 'b', 'II'], [2, 'a', 'I'], [2, 'a', 'II'], [2, 'b', 'I'], [2, 'b', 'II'], ]*/
Arr::divide()
Arr::divide
メソッドは、2つの配列を返します。1つはキーを含み、もう1つは指定された配列の値を含みます。
use Illuminate\Support\Arr; [$keys, $values] = Arr::divide(['name' => 'Desk']); // $keys: ['name'] // $values: ['Desk']
Arr::dot()
Arr::dot
メソッドは、多次元配列を、深さを示すために「ドット」表記を使用する単一レベルの配列にフラット化します。
use Illuminate\Support\Arr; $array = ['products' => ['desk' => ['price' => 100]]]; $flattened = Arr::dot($array); // ['products.desk.price' => 100]
Arr::except()
Arr::except
メソッドは、指定されたキーと値のペアを配列から削除します。
use Illuminate\Support\Arr; $array = ['name' => 'Desk', 'price' => 100]; $filtered = Arr::except($array, ['price']); // ['name' => 'Desk']
Arr::exists()
Arr::exists
メソッドは、指定されたキーが提供された配列に存在することを確認します。
use Illuminate\Support\Arr; $array = ['name' => 'John Doe', 'age' => 17]; $exists = Arr::exists($array, 'name'); // true $exists = Arr::exists($array, 'salary'); // false
Arr::first()
Arr::first
メソッドは、指定された真理テストに合格する配列の最初の要素を返します。
use Illuminate\Support\Arr; $array = [100, 200, 300]; $first = Arr::first($array, function (int $value, int $key) { return $value >= 150;}); // 200
デフォルト値は、メソッドの3番目のパラメータとして渡すこともできます。この値は、真理テストに合格する値がない場合に返されます。
use Illuminate\Support\Arr; $first = Arr::first($array, $callback, $default);
Arr::flatten()
Arr::flatten
メソッドは、多次元配列を単一レベルの配列に平坦化します。
use Illuminate\Support\Arr; $array = ['name' => 'Joe', 'languages' => ['PHP', 'Ruby']]; $flattened = Arr::flatten($array); // ['Joe', 'PHP', 'Ruby']
Arr::forget()
Arr::forget
メソッドは、「ドット」記法を使用して、深くネストされた配列から指定されたキー/値のペアを削除します。
use Illuminate\Support\Arr; $array = ['products' => ['desk' => ['price' => 100]]]; Arr::forget($array, 'products.desk'); // ['products' => []]
Arr::get()
Arr::get
メソッドは、「ドット」記法を使用して、深くネストされた配列から値を取得します。
use Illuminate\Support\Arr; $array = ['products' => ['desk' => ['price' => 100]]]; $price = Arr::get($array, 'products.desk.price'); // 100
Arr::get
メソッドは、指定されたキーが配列に存在しない場合に返されるデフォルト値も受け入れます。
use Illuminate\Support\Arr; $discount = Arr::get($array, 'products.desk.discount', 0); // 0
Arr::has()
Arr::has
メソッドは、「ドット」記法を使用して、指定された項目(単数または複数)が配列に存在するかどうかを確認します。
use Illuminate\Support\Arr; $array = ['product' => ['name' => 'Desk', 'price' => 100]]; $contains = Arr::has($array, 'product.name'); // true $contains = Arr::has($array, ['product.price', 'product.discount']); // false
Arr::hasAny()
Arr::hasAny
メソッドは、「ドット」記法を使用して、指定されたセット内のいずれかの項目が配列に存在するかどうかを確認します。
use Illuminate\Support\Arr; $array = ['product' => ['name' => 'Desk', 'price' => 100]]; $contains = Arr::hasAny($array, 'product.name'); // true $contains = Arr::hasAny($array, ['product.name', 'product.discount']); // true $contains = Arr::hasAny($array, ['category', 'product.discount']); // false
Arr::isAssoc()
Arr::isAssoc
メソッドは、指定された配列が連想配列である場合にtrue
を返します。配列は、ゼロから始まる連続した数値キーを持たない場合、「連想配列」と見なされます。
use Illuminate\Support\Arr; $isAssoc = Arr::isAssoc(['product' => ['name' => 'Desk', 'price' => 100]]); // true $isAssoc = Arr::isAssoc([1, 2, 3]); // false
Arr::isList()
Arr::isList
メソッドは、指定された配列のキーがゼロから始まる連続した整数である場合にtrue
を返します。
use Illuminate\Support\Arr; $isList = Arr::isList(['foo', 'bar', 'baz']); // true $isList = Arr::isList(['product' => ['name' => 'Desk', 'price' => 100]]); // false
Arr::join()
Arr::join
メソッドは、配列要素を文字列で結合します。このメソッドの2番目の引数を使用すると、配列の最後の要素の結合文字列を指定することもできます。
use Illuminate\Support\Arr; $array = ['Tailwind', 'Alpine', 'Laravel', 'Livewire']; $joined = Arr::join($array, ', '); // Tailwind, Alpine, Laravel, Livewire $joined = Arr::join($array, ', ', ' and '); // Tailwind, Alpine, Laravel and Livewire
Arr::keyBy()
Arr::keyBy
メソッドは、指定されたキーで配列をキー化します。複数の項目が同じキーを持つ場合、新しい配列には最後の項目のみが表示されます。
use Illuminate\Support\Arr; $array = [ ['product_id' => 'prod-100', 'name' => 'Desk'], ['product_id' => 'prod-200', 'name' => 'Chair'],]; $keyed = Arr::keyBy($array, 'product_id'); /* [ 'prod-100' => ['product_id' => 'prod-100', 'name' => 'Desk'], 'prod-200' => ['product_id' => 'prod-200', 'name' => 'Chair'], ]*/
Arr::last()
Arr::last
メソッドは、指定された真理テストに合格する配列の最後の要素を返します。
use Illuminate\Support\Arr; $array = [100, 200, 300, 110]; $last = Arr::last($array, function (int $value, int $key) { return $value >= 150;}); // 300
デフォルト値は、メソッドの3番目の引数として渡すことができます。この値は、真理テストに合格する値がない場合に返されます。
use Illuminate\Support\Arr; $last = Arr::last($array, $callback, $default);
Arr::map()
Arr::map
メソッドは、配列を反復処理し、各値とキーを指定されたコールバックに渡します。配列の値は、コールバックによって返される値に置き換えられます。
use Illuminate\Support\Arr; $array = ['first' => 'james', 'last' => 'kirk']; $mapped = Arr::map($array, function (string $value, string $key) { return ucfirst($value);}); // ['first' => 'James', 'last' => 'Kirk']
Arr::mapSpread()
Arr::mapSpread
メソッドは、配列を反復処理し、ネストされた各項目値を指定されたクロージャに渡します。クロージャは項目を自由に修正して返すことができ、それによって修正された項目の新しい配列が形成されます。
use Illuminate\Support\Arr; $array = [ [0, 1], [2, 3], [4, 5], [6, 7], [8, 9],]; $mapped = Arr::mapSpread($array, function (int $even, int $odd) { return $even + $odd;}); /* [1, 5, 9, 13, 17]*/
Arr::mapWithKeys()
Arr::mapWithKeys
メソッドは、配列を反復処理し、各値を指定されたコールバックに渡します。コールバックは、単一のキー/値のペアを含む連想配列を返す必要があります。
use Illuminate\Support\Arr; $array = [ [ 'name' => 'John', 'department' => 'Sales', ], [ 'name' => 'Jane', 'department' => 'Marketing', ]]; $mapped = Arr::mapWithKeys($array, function (array $item, int $key) { return [$item['email'] => $item['name']];}); /* [ '[email protected]' => 'John', '[email protected]' => 'Jane', ]*/
Arr::only()
Arr::only
メソッドは、指定されたキー/値のペアのみを、指定された配列から返します。
use Illuminate\Support\Arr; $array = ['name' => 'Desk', 'price' => 100, 'orders' => 10]; $slice = Arr::only($array, ['name', 'price']); // ['name' => 'Desk', 'price' => 100]
Arr::pluck()
Arr::pluck
メソッドは、配列から指定されたキーのすべての値を取得します。
use Illuminate\Support\Arr; $array = [ ['developer' => ['id' => 1, 'name' => 'Taylor']], ['developer' => ['id' => 2, 'name' => 'Abigail']],]; $names = Arr::pluck($array, 'developer.name'); // ['Taylor', 'Abigail']
結果のリストをどのようにキー化するかを指定することもできます。
use Illuminate\Support\Arr; $names = Arr::pluck($array, 'developer.name', 'developer.id'); // [1 => 'Taylor', 2 => 'Abigail']
Arr::prepend()
Arr::prepend
メソッドは、配列の先頭に項目をプッシュします。
use Illuminate\Support\Arr; $array = ['one', 'two', 'three', 'four']; $array = Arr::prepend($array, 'zero'); // ['zero', 'one', 'two', 'three', 'four']
必要に応じて、値に使用するキーを指定できます。
use Illuminate\Support\Arr; $array = ['price' => 100]; $array = Arr::prepend($array, 'Desk', 'name'); // ['name' => 'Desk', 'price' => 100]
Arr::prependKeysWith()
Arr::prependKeysWith
は、連想配列のすべてのキー名を、指定されたプレフィックスでプリペンドします。
use Illuminate\Support\Arr; $array = [ 'name' => 'Desk', 'price' => 100,]; $keyed = Arr::prependKeysWith($array, 'product.'); /* [ 'product.name' => 'Desk', 'product.price' => 100, ]*/
Arr::pull()
Arr::pull
メソッドは、配列からキー/値のペアを返し、削除します。
use Illuminate\Support\Arr; $array = ['name' => 'Desk', 'price' => 100]; $name = Arr::pull($array, 'name'); // $name: Desk // $array: ['price' => 100]
デフォルト値は、メソッドの3番目の引数として渡すことができます。この値は、キーが存在しない場合に返されます。
use Illuminate\Support\Arr; $value = Arr::pull($array, $key, $default);
Arr::query()
Arr::query
メソッドは、配列をクエリ文字列に変換します。
use Illuminate\Support\Arr; $array = [ 'name' => 'Taylor', 'order' => [ 'column' => 'created_at', 'direction' => 'desc' ]]; Arr::query($array); // name=Taylor&order[column]=created_at&order[direction]=desc
Arr::random()
Arr::random
メソッドは、配列からランダムな値を返します。
use Illuminate\Support\Arr; $array = [1, 2, 3, 4, 5]; $random = Arr::random($array); // 4 - (retrieved randomly)
オプションの2番目の引数として、返される項目の数を指定することもできます。この引数を指定すると、1つの項目のみが必要な場合でも配列が返されることに注意してください。
use Illuminate\Support\Arr; $items = Arr::random($array, 2); // [2, 5] - (retrieved randomly)
Arr::set()
Arr::set
メソッドは、「ドット」記法を使用して、深くネストされた配列内の値を設定します。
use Illuminate\Support\Arr; $array = ['products' => ['desk' => ['price' => 100]]]; Arr::set($array, 'products.desk.price', 200); // ['products' => ['desk' => ['price' => 200]]]
Arr::shuffle()
Arr::shuffle
メソッドは、配列内の項目をランダムにシャッフルします。
use Illuminate\Support\Arr; $array = Arr::shuffle([1, 2, 3, 4, 5]); // [3, 2, 5, 1, 4] - (generated randomly)
Arr::sort()
Arr::sort
メソッドは、配列をその値でソートします。
use Illuminate\Support\Arr; $array = ['Desk', 'Table', 'Chair']; $sorted = Arr::sort($array); // ['Chair', 'Desk', 'Table']
指定されたクロージャの結果で配列をソートすることもできます。
use Illuminate\Support\Arr; $array = [ ['name' => 'Desk'], ['name' => 'Table'], ['name' => 'Chair'],]; $sorted = array_values(Arr::sort($array, function (array $value) { return $value['name'];})); /* [ ['name' => 'Chair'], ['name' => 'Desk'], ['name' => 'Table'], ]*/
Arr::sortDesc()
Arr::sortDesc
メソッドは、配列をその値で降順にソートします。
use Illuminate\Support\Arr; $array = ['Desk', 'Table', 'Chair']; $sorted = Arr::sortDesc($array); // ['Table', 'Desk', 'Chair']
指定されたクロージャの結果で配列をソートすることもできます。
use Illuminate\Support\Arr; $array = [ ['name' => 'Desk'], ['name' => 'Table'], ['name' => 'Chair'],]; $sorted = array_values(Arr::sortDesc($array, function (array $value) { return $value['name'];})); /* [ ['name' => 'Table'], ['name' => 'Desk'], ['name' => 'Chair'], ]*/
Arr::sortRecursive()
Arr::sortRecursive
メソッドは、数値インデックス付きのサブ配列にはsort
関数を、連想サブ配列にはksort
関数を使用して、配列を再帰的にソートします。
use Illuminate\Support\Arr; $array = [ ['Roman', 'Taylor', 'Li'], ['PHP', 'Ruby', 'JavaScript'], ['one' => 1, 'two' => 2, 'three' => 3],]; $sorted = Arr::sortRecursive($array); /* [ ['JavaScript', 'PHP', 'Ruby'], ['one' => 1, 'three' => 3, 'two' => 2], ['Li', 'Roman', 'Taylor'], ]*/
結果を降順でソートする場合は、Arr::sortRecursiveDesc
メソッドを使用できます。
$sorted = Arr::sortRecursiveDesc($array);
Arr::take()
Arr::take
メソッドは、指定された数の項目を含む新しい配列を返します。
use Illuminate\Support\Arr; $array = [0, 1, 2, 3, 4, 5]; $chunk = Arr::take($array, 3); // [0, 1, 2]
負の整数を渡して、配列の末尾から指定された数の項目を取得することもできます。
$array = [0, 1, 2, 3, 4, 5]; $chunk = Arr::take($array, -2); // [4, 5]
Arr::toCssClasses()
Arr::toCssClasses
メソッドは、条件付きでCSSクラス文字列をコンパイルします。このメソッドは、配列キーに追加するクラスまたはクラスが含まれ、値がブール式であるクラスの配列を受け入れます。配列要素に数値キーがある場合、レンダリングされたクラスリストに常に含まれます。
use Illuminate\Support\Arr; $isActive = false;$hasError = true; $array = ['p-4', 'font-bold' => $isActive, 'bg-red' => $hasError]; $classes = Arr::toCssClasses($array); /* 'p-4 bg-red'*/
Arr::toCssStyles()
Arr::toCssStyles
は、条件付きでCSSスタイル文字列をコンパイルします。このメソッドは、配列キーに追加するクラスまたはクラスが含まれ、値がブール式であるクラスの配列を受け入れます。配列要素に数値キーがある場合、レンダリングされたクラスリストに常に含まれます。
use Illuminate\Support\Arr; $hasColor = true; $array = ['background-color: blue', 'color: blue' => $hasColor]; $classes = Arr::toCssStyles($array); /* 'background-color: blue; color: blue;'*/
このメソッドは、Bladeコンポーネントの属性バッグでクラスをマージしたり、@class
Bladeディレクティブを使用したりするLaravelの機能を強化します。
Arr::undot()
Arr::undot
メソッドは、「ドット」記法を使用する単一次元配列を多次元配列に展開します。
use Illuminate\Support\Arr; $array = [ 'user.name' => 'Kevin Malone', 'user.occupation' => 'Accountant',]; $array = Arr::undot($array); // ['user' => ['name' => 'Kevin Malone', 'occupation' => 'Accountant']]
Arr::where()
Arr::where
メソッドは、指定されたクロージャを使用して配列をフィルタリングします。
use Illuminate\Support\Arr; $array = [100, '200', 300, '400', 500]; $filtered = Arr::where($array, function (string|int $value, int $key) { return is_string($value);}); // [1 => '200', 3 => '400']
Arr::whereNotNull()
Arr::whereNotNull
メソッドは、指定された配列からすべてのnull
値を削除します。
use Illuminate\Support\Arr; $array = [0, null]; $filtered = Arr::whereNotNull($array); // [0 => 0]
Arr::wrap()
Arr::wrap
メソッドは、指定された値を配列でラップします。指定された値がすでに配列である場合は、変更せずに返されます。
use Illuminate\Support\Arr; $string = 'Laravel'; $array = Arr::wrap($string); // ['Laravel']
指定された値がnull
の場合は、空の配列が返されます。
use Illuminate\Support\Arr; $array = Arr::wrap(null); // []
data_fill()
data_fill
関数は、「ドット」記法を使用して、ネストされた配列またはオブジェクト内の欠落値を設定します。
$data = ['products' => ['desk' => ['price' => 100]]]; data_fill($data, 'products.desk.price', 200); // ['products' => ['desk' => ['price' => 100]]] data_fill($data, 'products.desk.discount', 10); // ['products' => ['desk' => ['price' => 100, 'discount' => 10]]]
この関数は、ワイルドカードとしてアスタリスクも受け入れ、それに応じてターゲットを埋めます。
$data = [ 'products' => [ ['name' => 'Desk 1', 'price' => 100], ['name' => 'Desk 2'], ],]; data_fill($data, 'products.*.price', 200); /* [ 'products' => [ ['name' => 'Desk 1', 'price' => 100], ['name' => 'Desk 2', 'price' => 200], ], ]*/
data_get()
data_get
関数は、「ドット」記法を使用して、ネストされた配列またはオブジェクトから値を取得します。
$data = ['products' => ['desk' => ['price' => 100]]]; $price = data_get($data, 'products.desk.price'); // 100
data_get
関数は、指定されたキーが見つからない場合に返されるデフォルト値も受け入れます。
$discount = data_get($data, 'products.desk.discount', 0); // 0
この関数は、配列またはオブジェクトの任意のキーをターゲットにできるアスタリスクを使用して、ワイルドカードも受け入れます。
$data = [ 'product-one' => ['name' => 'Desk 1', 'price' => 100], 'product-two' => ['name' => 'Desk 2', 'price' => 150],]; data_get($data, '*.name'); // ['Desk 1', 'Desk 2'];
{first}
および{last}
プレースホルダーを使用して、配列内の最初または最後の項目を取得できます。
$flight = [ 'segments' => [ ['from' => 'LHR', 'departure' => '9:00', 'to' => 'IST', 'arrival' => '15:00'], ['from' => 'IST', 'departure' => '16:00', 'to' => 'PKX', 'arrival' => '20:00'], ],]; data_get($flight, 'segments.{first}.arrival'); // 15:00
data_set()
data_set
関数は、「ドット」記法を使用して、ネストされた配列またはオブジェクト内の値を設定します。
$data = ['products' => ['desk' => ['price' => 100]]]; data_set($data, 'products.desk.price', 200); // ['products' => ['desk' => ['price' => 200]]]
この関数は、アスタリスクを使用するワイルドカードも受け入れ、それに応じてターゲットに値を設定します。
$data = [ 'products' => [ ['name' => 'Desk 1', 'price' => 100], ['name' => 'Desk 2', 'price' => 150], ],]; data_set($data, 'products.*.price', 200); /* [ 'products' => [ ['name' => 'Desk 1', 'price' => 200], ['name' => 'Desk 2', 'price' => 200], ], ]*/
デフォルトでは、既存の値はすべて上書きされます。値が存在しない場合にのみ値を設定する場合は、関数の4番目の引数としてfalse
を渡すことができます。
$data = ['products' => ['desk' => ['price' => 100]]]; data_set($data, 'products.desk.price', 200, overwrite: false); // ['products' => ['desk' => ['price' => 100]]]
data_forget()
data_forget
関数は、「ドット」記法を使用して、ネストされた配列またはオブジェクト内の値を削除します。
$data = ['products' => ['desk' => ['price' => 100]]]; data_forget($data, 'products.desk.price'); // ['products' => ['desk' => []]]
この関数は、アスタリスクを使用するワイルドカードも受け入れ、それに応じてターゲットの値を削除します。
$data = [ 'products' => [ ['name' => 'Desk 1', 'price' => 100], ['name' => 'Desk 2', 'price' => 150], ],]; data_forget($data, 'products.*.price'); /* [ 'products' => [ ['name' => 'Desk 1'], ['name' => 'Desk 2'], ], ]*/
head()
head
関数は、指定された配列の最初の要素を返します。
$array = [100, 200, 300]; $first = head($array); // 100
last()
last
関数は、指定された配列の最後の要素を返します。
$array = [100, 200, 300]; $last = last($array); // 300
数値
Number::abbreviate()
Number::abbreviate
メソッドは、提供された数値の人間が読める形式を、単位の省略形とともに返します。
use Illuminate\Support\Number; $number = Number::abbreviate(1000); // 1K $number = Number::abbreviate(489939); // 490K $number = Number::abbreviate(1230000, precision: 2); // 1.23M
Number::clamp()
Number::clamp
メソッドは、指定された範囲内に指定された数値が収まるようにします。数値が最小値より小さい場合は最小値が返されます。数値が最大値より大きい場合は最大値が返されます。
use Illuminate\Support\Number; $number = Number::clamp(105, min: 10, max: 100); // 100 $number = Number::clamp(5, min: 10, max: 100); // 10 $number = Number::clamp(10, min: 10, max: 100); // 10 $number = Number::clamp(20, min: 10, max: 100); // 20
Number::currency()
Number::currency
メソッドは、指定された値の通貨表現を文字列として返します。
use Illuminate\Support\Number; $currency = Number::currency(1000); // $1,000.00 $currency = Number::currency(1000, in: 'EUR'); // €1,000.00 $currency = Number::currency(1000, in: 'EUR', locale: 'de'); // 1.000,00 €
Number::defaultCurrency()
Number::defaultCurrency
メソッドは、Number
クラスで使用されているデフォルトの通貨を返します。
use Illuminate\Support\Number; $currency = Number::defaultCurrency(); // USD
Number::defaultLocale()
Number::defaultLocale
メソッドは、Number
クラスで使用されているデフォルトのロケールを返します。
use Illuminate\Support\Number; $locale = Number::defaultLocale(); // en
Number::fileSize()
Number::fileSize
メソッドは、指定されたバイト値のファイルサイズ表現を文字列として返します。
use Illuminate\Support\Number; $size = Number::fileSize(1024); // 1 KB $size = Number::fileSize(1024 * 1024); // 1 MB $size = Number::fileSize(1024, precision: 2); // 1.00 KB
Number::forHumans()
Number::forHumans
メソッドは、提供された数値の人間が読める形式を返します。
use Illuminate\Support\Number; $number = Number::forHumans(1000); // 1 thousand $number = Number::forHumans(489939); // 490 thousand $number = Number::forHumans(1230000, precision: 2); // 1.23 million
Number::format()
Number::format
メソッドは、指定された数値をロケール固有の文字列にフォーマットします。
use Illuminate\Support\Number; $number = Number::format(100000); // 100,000 $number = Number::format(100000, precision: 2); // 100,000.00 $number = Number::format(100000.123, maxPrecision: 2); // 100,000.12 $number = Number::format(100000, locale: 'de'); // 100.000
Number::ordinal()
Number::ordinal
メソッドは、数値の序数表現を返します。
use Illuminate\Support\Number; $number = Number::ordinal(1); // 1st $number = Number::ordinal(2); // 2nd $number = Number::ordinal(21); // 21st
Number::pairs()
Number::pairs
メソッドは、指定された範囲とステップ値に基づいて、数値ペア(サブレンジ)の配列を生成します。このメソッドは、ページネーションやバッチ処理タスクなどのために、より大きな数値範囲をより小さく管理しやすいサブレンジに分割する場合に役立ちます。pairs
メソッドは、配列の配列を返します。各内部配列は、数値のペア(サブレンジ)を表します。
use Illuminate\Support\Number; $result = Number::pairs(25, 10); // [[1, 10], [11, 20], [21, 25]] $result = Number::pairs(25, 10, offset: 0); // [[0, 10], [10, 20], [20, 25]]
Number::percentage()
Number::percentage
メソッドは、指定された値のパーセント表示を文字列として返します。
use Illuminate\Support\Number; $percentage = Number::percentage(10); // 10% $percentage = Number::percentage(10, precision: 2); // 10.00% $percentage = Number::percentage(10.123, maxPrecision: 2); // 10.12% $percentage = Number::percentage(10, precision: 2, locale: 'de'); // 10,00%
Number::spell()
Number::spell
メソッドは、指定された数値を単語の文字列に変換します。
use Illuminate\Support\Number; $number = Number::spell(102); // one hundred and two $number = Number::spell(88, locale: 'fr'); // quatre-vingt-huit
after
引数を使用すると、すべての数値を綴る必要のある値を指定できます。
$number = Number::spell(10, after: 10); // 10 $number = Number::spell(11, after: 10); // eleven
until
引数を使用すると、すべての数値を綴る必要のある値の値を指定できます。
$number = Number::spell(5, until: 10); // five $number = Number::spell(10, until: 10); // 10
Number::trim()
Number::trim
メソッドは、指定された数値の小数点以下の末尾のゼロ桁をすべて削除します。
use Illuminate\Support\Number; $number = Number::trim(12.0); // 12 $number = Number::trim(12.30); // 12.3
Number::useLocale()
Number::useLocale
メソッドは、グローバルにデフォルトの数値ロケールを設定します。これは、Number
クラスのメソッドの後続の呼び出しによって数値と通貨がどのようにフォーマットされるかに影響します。
use Illuminate\Support\Number; /** * Bootstrap any application services. */public function boot(): void{ Number::useLocale('de');}
Number::withLocale()
Number::withLocale
メソッドは、指定されたロケールを使用して指定されたクロージャを実行し、コールバックが実行された後に元のロケールを復元します。
use Illuminate\Support\Number; $number = Number::withLocale('de', function () { return Number::format(1500);});
Number::useCurrency()
Number::useCurrency
メソッドは、デフォルトの通貨をグローバルに設定します。これは、その後の Number
クラスのメソッド呼び出しによる通貨のフォーマットに影響を与えます。
use Illuminate\Support\Number; /** * Bootstrap any application services. */public function boot(): void{ Number::useCurrency('GBP');}
Number::withCurrency()
Number::withCurrency
メソッドは、指定された通貨を使用して指定されたクロージャを実行し、コールバックの実行後に元の通貨を復元します。
use Illuminate\Support\Number; $number = Number::withCurrency('GBP', function () { // ...});
パス
app_path()
app_path
関数は、アプリケーションの app
ディレクトリへの完全修飾パスを返します。また、app_path
関数を使用して、アプリケーションディレクトリを基準としたファイルの完全修飾パスを生成することもできます。
$path = app_path(); $path = app_path('Http/Controllers/Controller.php');
base_path()
base_path
関数は、アプリケーションのルートディレクトリへの完全修飾パスを返します。また、base_path
関数を使用して、プロジェクトルートディレクトリを基準とした特定のファイルの完全修飾パスを生成することもできます。
$path = base_path(); $path = base_path('vendor/bin');
config_path()
config_path
関数は、アプリケーションの config
ディレクトリへの完全修飾パスを返します。また、config_path
関数を使用して、アプリケーションの設定ディレクトリ内の特定のファイルの完全修飾パスを生成することもできます。
$path = config_path(); $path = config_path('app.php');
database_path()
database_path
関数は、アプリケーションの database
ディレクトリへの完全修飾パスを返します。また、database_path
関数を使用して、データベースディレクトリ内の特定のファイルの完全修飾パスを生成することもできます。
$path = database_path(); $path = database_path('factories/UserFactory.php');
lang_path()
lang_path
関数は、アプリケーションの lang
ディレクトリへの完全修飾パスを返します。また、lang_path
関数を使用して、ディレクトリ内の特定のファイルの完全修飾パスを生成することもできます。
$path = lang_path(); $path = lang_path('en/messages.php');
デフォルトでは、Laravel アプリケーションのスケルトンには lang
ディレクトリは含まれていません。Laravel の言語ファイルをカスタマイズしたい場合は、lang:publish
Artisan コマンドを使用して公開できます。
mix()
mix
関数は、バージョン管理された Mix ファイルへのパスを返します。
$path = mix('css/app.css');
public_path()
public_path
関数は、アプリケーションの public
ディレクトリへの完全修飾パスを返します。また、public_path
関数を使用して、パブリックディレクトリ内の特定のファイルの完全修飾パスを生成することもできます。
$path = public_path(); $path = public_path('css/app.css');
resource_path()
resource_path
関数は、アプリケーションの resources
ディレクトリへの完全修飾パスを返します。また、resource_path
関数を使用して、リソースディレクトリ内の特定のファイルの完全修飾パスを生成することもできます。
$path = resource_path(); $path = resource_path('sass/app.scss');
storage_path()
storage_path
関数は、アプリケーションの storage
ディレクトリへの完全修飾パスを返します。また、storage_path
関数を使用して、ストレージディレクトリ内の特定のファイルの完全修飾パスを生成することもできます。
$path = storage_path(); $path = storage_path('app/file.txt');
URL
action()
action
関数は、指定されたコントローラーのアクションの URL を生成します。
use App\Http\Controllers\HomeController; $url = action([HomeController::class, 'index']);
メソッドがルートパラメータを受け入れる場合は、メソッドの 2 番目の引数として渡すことができます。
$url = action([UserController::class, 'profile'], ['id' => 1]);
asset()
asset
関数は、リクエストの現在のスキーム(HTTP または HTTPS)を使用してアセットの URL を生成します。
$url = asset('img/photo.jpg');
.env
ファイルで ASSET_URL
変数を設定することにより、アセット URL ホストを設定できます。これは、Amazon S3 やその他の CDN などの外部サービスでアセットをホストする場合に役立ちます。
// ASSET_URL=http://example.com/assets $url = asset('img/photo.jpg'); // http://example.com/assets/img/photo.jpg
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);
secure_asset()
secure_asset
関数は、HTTPS を使用してアセットの URL を生成します。
$url = secure_asset('img/photo.jpg');
secure_url()
secure_url
関数は、指定されたパスへの完全修飾 HTTPS URL を生成します。追加の URL セグメントは、関数の 2 番目の引数に渡すことができます。
$url = secure_url('user/profile'); $url = secure_url('user/profile', [1]);
to_route()
to_route
関数は、指定された名前付きルートのリダイレクト HTTP レスポンスを生成します。
return to_route('users.show', ['user' => 1]);
必要に応じて、リダイレクトに割り当てる必要がある HTTP ステータスコードと、to_route
メソッドの 3 番目と 4 番目の引数として追加のレスポンスヘッダーを渡すことができます。
return to_route('users.show', ['user' => 1], 302, ['X-Framework' => 'Laravel']);
url()
url
関数は、指定されたパスへの完全修飾 URL を生成します。
$url = url('user/profile'); $url = url('user/profile', [1]);
パスが指定されていない場合は、Illuminate\Routing\UrlGenerator
インスタンスが返されます。
$current = url()->current(); $full = url()->full(); $previous = url()->previous();
その他
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 番目の引数としてカスタムレスポンスヘッダーの配列を指定することもできます。
app()
app
関数は、サービスコンテナインスタンスを返します。
$container = app();
クラス名またはインターフェース名を渡して、コンテナから解決できます。
$api = app('HelpSpot\API');
auth()
auth
関数は、認証インスタンスを返します。これは、Auth
ファサードの代替として使用できます。
$user = auth()->user();
必要に応じて、アクセスしたいガードインスタンスを指定できます。
$user = auth('admin')->user();
back()
back
関数は、ユーザーの前の場所へのリダイレクト HTTP レスポンスを生成します。
return back($status = 302, $headers = [], $fallback = '/'); return back();
bcrypt()
bcrypt
関数は、Bcrypt を使用して指定された値をハッシュ化します。この関数は、Hash
ファサードの代替として使用できます。
$password = bcrypt('my-secret-password');
blank()
blank
関数は、指定された値が「空白」かどうかを判断します。
blank('');blank(' ');blank(null);blank(collect()); // true blank(0);blank(true);blank(false); // false
blank
の逆については、filled
メソッドを参照してください。
broadcast()
broadcast
関数は、指定されたイベントをリスナーにブロードキャストします。
broadcast(new UserRegistered($user)); broadcast(new UserRegistered($user))->toOthers();
cache()
cache
関数は、キャッシュから値を取得するために使用できます。指定されたキーがキャッシュに存在しない場合は、オプションのデフォルト値が返されます。
$value = cache('key'); $value = cache('key', 'default');
関数にキーと値のペアの配列を渡すことで、キャッシュにアイテムを追加できます。キャッシュされた値が有効とみなされる秒数または期間も渡す必要があります。
cache(['key' => 'value'], 300); cache(['key' => 'value'], now()->addSeconds(10));
class_uses_recursive()
class_uses_recursive
関数は、クラスとそのすべての親クラスで使用されるトレイトを含む、クラスで使用されるすべてのトレイトを返します。
$traits = class_uses_recursive(App\Models\User::class);
collect()
collect
関数は、指定された値からコレクションインスタンスを作成します。
$collection = collect(['taylor', 'abigail']);
config()
config
関数は、設定変数の値を取得します。設定値には、「ドット」構文を使用してアクセスできます。これには、ファイルの名前とアクセスしたいオプションが含まれます。デフォルト値を指定でき、設定オプションが存在しない場合はそれが返されます。
$value = config('app.timezone'); $value = config('app.timezone', $default);
キーと値のペアの配列を渡すことで、実行時に設定変数を設定できます。ただし、この関数は現在のリクエストの設定値にのみ影響し、実際の設定値は更新しないことに注意してください。
config(['app.debug' => true]);
context()
context
関数は、現在のコンテキストから値を取得します。コンテキストキーが存在しない場合は、デフォルト値を指定でき、それが返されます。
$value = context('trace_id'); $value = context('trace_id', $default);
キーと値のペアの配列を渡すことで、コンテキスト値を設定できます。
use Illuminate\Support\Str; context(['trace_id' => Str::uuid()->toString()]);
cookie()
cookie
関数は、新しいクッキーインスタンスを作成します。
$cookie = cookie('name', 'value', $minutes);
csrf_field()
csrf_field
関数は、CSRF トークンの値を含む HTML hidden
入力フィールドを生成します。たとえば、Blade 構文を使用します。
{{ csrf_field() }}
csrf_token()
csrf_token
関数は、現在の CSRF トークンの値を取得します。
$token = csrf_token();
decrypt()
decrypt
関数は、指定された値を復号化します。この関数は、Crypt
ファサードの代替として使用できます。
$password = decrypt($value);
dd()
dd
関数は、指定された変数をダンプし、スクリプトの実行を終了します。
dd($value); dd($value1, $value2, $value3, ...);
スクリプトの実行を中断したくない場合は、代わりにdump
関数を使用してください。
dispatch()
dispatch
関数は、指定されたジョブを Laravel のジョブキューにプッシュします。
dispatch(new App\Jobs\SendEmails);
dispatch_sync()
dispatch_sync
関数は、指定されたジョブを同期キューにプッシュして、すぐに処理されるようにします。
dispatch_sync(new App\Jobs\SendEmails);
dump()
dump
関数は、指定された変数をダンプします。
dump($value); dump($value1, $value2, $value3, ...);
変数をダンプした後でスクリプトの実行を停止する場合は、代わりにdd
関数を使用してください。
encrypt()
encrypt
関数は、指定された値を暗号化します。この関数は、Crypt
ファサードの代替として使用できます。
$secret = encrypt('my-secret-value');
env()
env
関数は、環境変数の値を取得するか、デフォルト値を返します。
$env = env('APP_ENV'); $env = env('APP_ENV', 'production');
デプロイプロセス中に config:cache
コマンドを実行する場合は、設定ファイル内からのみ env
関数を呼び出していることを確認する必要があります。設定がキャッシュされると、.env
ファイルはロードされなくなり、env
関数へのすべての呼び出しは null
を返します。
event()
event
関数は、指定されたイベントをリスナーにディスパッチします。
event(new UserRegistered($user));
fake()
fake
関数は、コンテナからFaker シングルトンを解決します。これは、モデルファクトリー、データベースシード、テスト、プロトタイピングビューで偽のデータを作成する場合に役立ちます。
@for($i = 0; $i < 10; $i++) <dl> <dt>Name</dt> <dd>{{ fake()->name() }}</dd> <dt>Email</dt> <dd>{{ fake()->unique()->safeEmail() }}</dd> </dl>@endfor
デフォルトでは、fake
関数は config/app.php
設定の app.faker_locale
設定オプションを利用します。通常、この設定オプションは APP_FAKER_LOCALE
環境変数を通じて設定されます。ロケールを指定するには、fake
関数に渡すこともできます。各ロケールは個別のシングルトンを解決します。
fake('nl_NL')->name()
filled()
filled
関数は、指定された値が「空白」でないかどうかを判断します。
filled(0);filled(true);filled(false); // true filled('');filled(' ');filled(null);filled(collect()); // false
filled
の逆については、blank
メソッドを参照してください。
info()
info
関数は、アプリケーションのログに情報を書き込みます。
info('Some helpful information!');
コンテキストデータの配列も関数に渡すことができます。
info('User login attempt failed.', ['id' => $user->id]);
literal()
literal
関数は、指定された名前付き引数をプロパティとして持つ新しいstdClassインスタンスを作成します。
$obj = literal( name: 'Joe', languages: ['PHP', 'Ruby'],); $obj->name; // 'Joe'$obj->languages; // ['PHP', 'Ruby']
logger()
logger
関数は、ログに debug
レベルのメッセージを書き込むために使用できます。
logger('Debug message');
コンテキストデータの配列も関数に渡すことができます。
logger('User has logged in.', ['id' => $user->id]);
関数に値が渡されない場合は、ロガーインスタンスが返されます。
logger()->error('You are not allowed here.');
method_field()
method_field
関数は、フォームの HTTP 動詞のスプーフィングされた値を含む HTML hidden
入力フィールドを生成します。たとえば、Blade 構文を使用します。
<form method="POST"> {{ method_field('DELETE') }}</form>
now()
now
関数は、現在の時刻の新しい Illuminate\Support\Carbon
インスタンスを作成します。
$now = now();
old()
old
関数は、セッションにフラッシュされた古い入力値を取得します。
$value = old('value'); $value = old('value', 'default');
old
関数に第2引数として提供される「デフォルト値」は、多くの場合Eloquentモデルの属性であるため、Laravelでは、Eloquentモデル全体をold
関数の第2引数として渡すことができます。その場合、Laravelはold
関数に提供された第1引数が「デフォルト値」と見なされるべきEloquent属性の名前であると仮定します。
{{ old('name', $user->name) }} // Is equivalent to... {{ old('name', $user) }}
once()
once
関数は、指定されたコールバックを実行し、リクエストの間、結果をメモリにキャッシュします。同じコールバックでonce
関数を後続で呼び出すと、以前にキャッシュされた結果が返されます。
function random(): int{ return once(function () { return random_int(1, 1000); });} random(); // 123random(); // 123 (cached result)random(); // 123 (cached result)
once
関数がオブジェクトインスタンス内から実行された場合、キャッシュされた結果はそのオブジェクトインスタンスに固有のものになります。
<?php class NumberService{ public function all(): array { return once(fn () => [1, 2, 3]); }} $service = new NumberService; $service->all();$service->all(); // (cached result) $secondService = new NumberService; $secondService->all();$secondService->all(); // (cached result)
optional()
optional
関数は任意の引数を受け入れ、そのオブジェクトのプロパティにアクセスしたり、メソッドを呼び出したりできます。指定されたオブジェクトがnull
の場合、エラーが発生する代わりに、プロパティとメソッドはnull
を返します。
return optional($user->address)->street; {!! old('name', optional($user)->name) !!}
optional
関数は、第2引数としてクロージャも受け入れます。第1引数として提供された値がnullでない場合、クロージャが呼び出されます。
return optional(User::find($id), function (User $user) { return $user->name;});
policy()
policy
メソッドは、指定されたクラスのポリシーインスタンスを取得します。
$policy = policy(App\Models\User::class);
redirect()
redirect
関数は、リダイレクトHTTPレスポンスを返すか、引数なしで呼び出された場合はリダイレクタインスタンスを返します。
return redirect($to = null, $status = 302, $headers = [], $https = null); return redirect('/home'); return redirect()->route('route.name');
report()
report
関数は、例外ハンドラを使用して例外を報告します。
report($e);
report
関数は、引数として文字列も受け入れます。文字列が関数に渡された場合、関数は、その文字列をメッセージとする例外を作成します。
report('Something went wrong.');
report_if()
report_if
関数は、指定された条件がtrue
の場合、例外ハンドラを使用して例外を報告します。
report_if($shouldReport, $e); report_if($shouldReport, 'Something went wrong.');
report_unless()
report_unless
関数は、指定された条件がfalse
の場合、例外ハンドラを使用して例外を報告します。
report_unless($reportingDisabled, $e); report_unless($reportingDisabled, 'Something went wrong.');
request()
request
関数は、現在のリクエストインスタンスを返すか、現在のリクエストから入力フィールドの値を取得します。
$request = request(); $value = request('key', $default);
rescue()
rescue
関数は、指定されたクロージャを実行し、その実行中に発生する例外をキャッチします。キャッチされたすべての例外は、例外ハンドラに送信されます。ただし、リクエストの処理は続行されます。
return rescue(function () { return $this->method();});
rescue
関数に第2引数を渡すこともできます。この引数は、クロージャの実行中に例外が発生した場合に返される「デフォルト」値になります。
return rescue(function () { return $this->method();}, false); return rescue(function () { return $this->method();}, function () { return $this->failure();});
rescue
関数には、report
関数を介して例外を報告するかどうかを決定するためのreport
引数を指定できます。
return rescue(function () { return $this->method();}, report: function (Throwable $throwable) { return $throwable instanceof InvalidArgumentException;});
resolve()
resolve
関数は、サービスコンテナを使用して、指定されたクラスまたはインターフェイス名をインスタンスに解決します。
$api = resolve('HelpSpot\API');
response()
response
関数は、レスポンスインスタンスを作成するか、レスポンスファクトリのインスタンスを取得します。
return response('Hello World', 200, $headers); return response()->json(['foo' => 'bar'], 200, $headers);
retry()
retry
関数は、指定された最大試行回数に達するまで、指定されたコールバックの実行を試みます。コールバックが例外をスローしない場合、その戻り値が返されます。コールバックが例外をスローした場合、自動的に再試行されます。最大試行回数を超えた場合、例外がスローされます。
return retry(5, function () { // Attempt 5 times while resting 100ms between attempts...}, 100);
試行間のスリープ時間(ミリ秒単位)を手動で計算したい場合は、retry
関数の第3引数としてクロージャを渡すことができます。
use Exception; return retry(5, function () { // ...}, function (int $attempt, Exception $exception) { return $attempt * 100;});
便宜上、retry
関数の第1引数として配列を指定できます。この配列は、後続の試行間のスリープ時間をミリ秒単位で決定するために使用されます。
return retry([100, 200], function () { // Sleep for 100ms on first retry, 200ms on second retry...});
特定の条件下でのみ再試行する場合は、retry
関数の第4引数としてクロージャを渡すことができます。
use Exception; return retry(5, function () { // ...}, 100, function (Exception $exception) { return $exception instanceof RetryException;});
session()
session
関数は、セッションの値を取得または設定するために使用できます。
$value = session('key');
キーと値のペアの配列を関数に渡すことで、値を設定できます。
session(['chairs' => 7, 'instruments' => 3]);
関数に値が渡されなかった場合、セッションストアが返されます。
$value = session()->get('key'); session()->put('key', $value);
tap()
tap
関数は、任意の$value
とクロージャの2つの引数を受け入れます。$value
はクロージャに渡され、その後、tap
関数によって返されます。クロージャの戻り値は無関係です。
$user = tap(User::first(), function (User $user) { $user->name = 'taylor'; $user->save();});
クロージャがtap
関数に渡されない場合、指定された$value
で任意のメソッドを呼び出すことができます。呼び出すメソッドの戻り値は、メソッドがその定義で実際に返すものに関係なく、常に$value
になります。たとえば、Eloquentのupdate
メソッドは通常整数を返します。ただし、tap
関数を介してupdate
メソッドの呼び出しを連鎖させることで、メソッドにモデル自体を返すように強制できます。
$user = tap($user)->update([ 'name' => $name, 'email' => $email,]);
クラスにtap
メソッドを追加するには、Illuminate\Support\Traits\Tappable
トレイトをクラスに追加できます。このトレイトのtap
メソッドは、唯一の引数としてクロージャを受け入れます。オブジェクトインスタンス自体がクロージャに渡され、その後、tap
メソッドによって返されます。
return $user->tap(function (User $user) { // ...});
throw_if()
throw_if
関数は、指定されたブール式がtrue
と評価された場合、指定された例外をスローします。
throw_if(! Auth::user()->isAdmin(), AuthorizationException::class); throw_if( ! Auth::user()->isAdmin(), AuthorizationException::class, 'You are not allowed to access this page.');
throw_unless()
throw_unless
関数は、指定されたブール式がfalse
と評価された場合、指定された例外をスローします。
throw_unless(Auth::user()->isAdmin(), AuthorizationException::class); throw_unless( Auth::user()->isAdmin(), AuthorizationException::class, 'You are not allowed to access this page.');
today()
today
関数は、現在の日付の新しいIlluminate\Support\Carbon
インスタンスを作成します。
$today = today();
trait_uses_recursive()
trait_uses_recursive
関数は、トレイトで使用されているすべてのトレイトを返します。
$traits = trait_uses_recursive(\Illuminate\Notifications\Notifiable::class);
transform()
transform
関数は、値が空でない場合、指定された値に対してクロージャを実行し、クロージャの戻り値を返します。
$callback = function (int $value) { return $value * 2;}; $result = transform(5, $callback); // 10
デフォルト値またはクロージャを、関数の第3引数として渡すことができます。指定された値が空の場合、この値が返されます。
$result = transform(null, $callback, 'The value is blank'); // The value is blank
validator()
validator
関数は、指定された引数を使用して新しいバリデータインスタンスを作成します。Validator
ファサードの代わりにこれを使用できます。
$validator = validator($data, $rules, $messages);
value()
value
関数は、与えられた値を返します。ただし、クロージャを関数に渡すと、クロージャが実行され、その戻り値が返されます。
$result = value(true); // true $result = value(function () { return false;}); // false
追加の引数をvalue
関数に渡すことができます。最初の引数がクロージャの場合、追加のパラメータは引数としてクロージャに渡されます。それ以外の場合は無視されます。
$result = value(function (string $name) { return $name;}, 'Taylor'); // 'Taylor'
view()
view
関数は、ビューインスタンスを取得します。
return view('auth.login');
with()
with
関数は、与えられた値を返します。クロージャが関数の第2引数として渡された場合、クロージャが実行され、その戻り値が返されます。
$callback = function (mixed $value) { return is_numeric($value) ? $value * 2 : 0;}; $result = with(5, $callback); // 10 $result = with(null, $callback); // 0 $result = with(5, null); // 5
when()
when
関数は、指定された条件がtrue
と評価された場合、与えられた値を返します。それ以外の場合は、null
が返されます。クロージャが関数の第2引数として渡された場合、クロージャが実行され、その戻り値が返されます。
$value = when(true, 'Hello World'); $value = when(true, fn () => 'Hello World');
when
関数は、主にHTML属性を条件付きでレンダリングする場合に役立ちます。
<div {!! when($condition, 'wire:poll="calculate"') !!}> ...</div>
その他のユーティリティ
ベンチマーク
アプリケーションの特定の部分のパフォーマンスをすばやくテストしたい場合があります。そのような場合は、Benchmark
サポートクラスを利用して、指定されたコールバックが完了するのにかかるミリ秒数を測定できます。
<?php use App\Models\User;use Illuminate\Support\Benchmark; Benchmark::dd(fn () => User::find(1)); // 0.1 ms Benchmark::dd([ 'Scenario 1' => fn () => User::count(), // 0.5 ms 'Scenario 2' => fn () => User::all()->count(), // 20.0 ms]);
デフォルトでは、指定されたコールバックは1回(1回の反復)実行され、その実行時間がブラウザ/コンソールに表示されます。
コールバックを複数回呼び出すには、コールバックを呼び出すべき反復回数をメソッドの第2引数として指定できます。コールバックを複数回実行する場合、Benchmark
クラスは、すべての反復でコールバックを実行するのにかかった平均ミリ秒数を返します。
Benchmark::dd(fn () => User::count(), iterations: 10); // 0.5 ms
場合によっては、コールバックによって返された値を取得しながら、コールバックの実行をベンチマークしたい場合があります。value
メソッドは、コールバックによって返された値と、コールバックの実行にかかったミリ秒数を含むタプルを返します。
[$count, $duration] = Benchmark::value(fn () => User::count());
日付
Laravelには、強力な日時操作ライブラリであるCarbonが含まれています。新しいCarbon
インスタンスを作成するには、now
関数を呼び出すことができます。この関数は、Laravelアプリケーション内でグローバルに使用できます。
$now = now();
または、Illuminate\Support\Carbon
クラスを使用して、新しいCarbon
インスタンスを作成することもできます。
use Illuminate\Support\Carbon; $now = Carbon::now();
Carbonとその機能の詳細については、公式のCarbonドキュメントを参照してください。
遅延関数
遅延関数は、コミュニティからのフィードバックを収集中のため、現在ベータ版です。
Laravelのキュージョブを使用すると、バックグラウンド処理のためにタスクをキューに入れることができますが、長時間実行されるキューワーカーを構成または維持せずに、遅延させたい簡単なタスクがある場合があります。
遅延関数を使用すると、HTTPレスポンスがユーザーに送信された後までクロージャの実行を遅延させることができるため、アプリケーションが高速かつ応答性が高い状態を維持できます。クロージャの実行を遅延させるには、クロージャをIlluminate\Support\defer
関数に渡すだけです。
use App\Services\Metrics;use Illuminate\Http\Request;use Illuminate\Support\Facades\Route;use function Illuminate\Support\defer; Route::post('/orders', function (Request $request) { // Create order... defer(fn () => Metrics::reportOrder($order)); return $order;});
デフォルトでは、遅延関数は、Illuminate\Support\defer
が呼び出されたHTTPレスポンス、Artisanコマンド、またはキュージョブが正常に完了した場合にのみ実行されます。これは、リクエストの結果が4xx
または5xx
のHTTPレスポンスになった場合、遅延関数は実行されないことを意味します。遅延関数を常に実行したい場合は、遅延関数にalways
メソッドをチェーンできます。
defer(fn () => Metrics::reportOrder($order))->always();
遅延関数のキャンセル
遅延関数が実行される前にキャンセルする必要がある場合は、forget
メソッドを使用して、名前で関数をキャンセルできます。遅延関数に名前を付けるには、Illuminate\Support\defer
関数の第2引数に名前を指定します。
defer(fn () => Metrics::report(), 'reportMetrics'); defer()->forget('reportMetrics');
遅延関数の互換性
Laravel 10.xアプリケーションからLaravel 11.xにアップグレードし、アプリケーションのスケルトンにapp/Http/Kernel.php
ファイルがまだ含まれている場合は、カーネルの$middleware
プロパティの先頭にInvokeDeferredCallbacks
ミドルウェアを追加する必要があります。
protected $middleware = [ \Illuminate\Foundation\Http\Middleware\InvokeDeferredCallbacks::class, \App\Http\Middleware\TrustProxies::class, // ...];
テストでの遅延関数の無効化
テストを作成する場合、遅延関数を無効にすると便利な場合があります。テストでwithoutDefer
を呼び出して、すべての遅延関数をすぐに呼び出すようにLaravelに指示できます。
test('without defer', function () { $this->withoutDefer(); // ...});
use Tests\TestCase; class ExampleTest extends TestCase{ public function test_without_defer(): void { $this->withoutDefer(); // ... }}
テストケース内のすべてのテストで遅延関数を無効にする場合は、ベースのTestCase
クラスのsetUp
メソッドからwithoutDefer
メソッドを呼び出すことができます。
<?php namespace Tests; use Illuminate\Foundation\Testing\TestCase as BaseTestCase; abstract class TestCase extends BaseTestCase{ protected function setUp(): void { parent::setUp(); $this->withoutDefer(); }}
宝くじ
Laravelの抽選クラスは、指定された確率に基づいてコールバックを実行するために使用できます。これは、着信リクエストの特定の割合に対してのみコードを実行したい場合に特に役立ちます。
use Illuminate\Support\Lottery; Lottery::odds(1, 20) ->winner(fn () => $user->won()) ->loser(fn () => $user->lost()) ->choose();
Laravelの抽選クラスを他のLaravel機能と組み合わせることができます。たとえば、例外ハンドラに対して、低速なクエリのほんの一部だけを報告したい場合があります。また、抽選クラスは呼び出し可能であるため、呼び出し可能を受け入れる任意の方法にクラスのインスタンスを渡すことができます。
use Carbon\CarbonInterval;use Illuminate\Support\Facades\DB;use Illuminate\Support\Lottery; DB::whenQueryingForLongerThan( CarbonInterval::seconds(2), Lottery::odds(1, 100)->winner(fn () => report('Querying > 2 seconds.')),);
抽選のテスト
Laravelは、アプリケーションの抽選の呼び出しを簡単にテストできるいくつかのシンプルなメソッドを提供します。
// Lottery will always win...Lottery::alwaysWin(); // Lottery will always lose...Lottery::alwaysLose(); // Lottery will win then lose, and finally return to normal behavior...Lottery::fix([true, false]); // Lottery will return to normal behavior...Lottery::determineResultsNormally();
パイプライン
LaravelのPipeline
ファサードは、与えられた入力を一連の呼び出し可能なクラス、クロージャ、またはコールバックを通じて「パイプ」するための便利な方法を提供します。各クラスは入力の検査または変更を行い、パイプライン内の次の呼び出し可能なものを呼び出す機会を持ちます。
use Closure;use App\Models\User;use Illuminate\Support\Facades\Pipeline; $user = Pipeline::send($user) ->through([ function (User $user, Closure $next) { // ... return $next($user); }, function (User $user, Closure $next) { // ... return $next($user); }, ]) ->then(fn (User $user) => $user);
ご覧のとおり、パイプライン内の各呼び出し可能なクラスまたはクロージャには、入力と$next
クロージャが提供されます。$next
クロージャを呼び出すと、パイプライン内の次の呼び出し可能なものが呼び出されます。お気づきかもしれませんが、これはミドルウェアに非常によく似ています。
パイプライン内の最後の呼び出し可能なものが$next
クロージャを呼び出すと、then
メソッドに提供された呼び出し可能なものが呼び出されます。通常、この呼び出し可能なものは、単に与えられた入力を返します。
もちろん、前述したように、パイプラインにクロージャを提供するだけに限定されるわけではありません。呼び出し可能なクラスを提供することもできます。クラス名が提供された場合、クラスはLaravelのサービスコンテナを介してインスタンス化され、依存関係を呼び出し可能なクラスに注入できます。
$user = Pipeline::send($user) ->through([ GenerateProfilePhoto::class, ActivateSubscription::class, SendWelcomeEmail::class, ]) ->then(fn (User $user) => $user);
スリープ
LaravelのSleep
クラスは、PHPネイティブのsleep
関数とusleep
関数を軽量にラップしたもので、時間を取り扱うための開発者に優しいAPIを提供すると同時に、テスト性を向上させます。
use Illuminate\Support\Sleep; $waiting = true; while ($waiting) { Sleep::for(1)->second(); $waiting = /* ... */;}
Sleep
クラスは、さまざまな時間の単位を扱うことができるさまざまなメソッドを提供します。
// Return a value after sleeping...$result = Sleep::for(1)->second()->then(fn () => 1 + 1); // Sleep while a given value is true...Sleep::for(1)->second()->while(fn () => shouldKeepSleeping()); // Pause execution for 90 seconds...Sleep::for(1.5)->minutes(); // Pause execution for 2 seconds...Sleep::for(2)->seconds(); // Pause execution for 500 milliseconds...Sleep::for(500)->milliseconds(); // Pause execution for 5,000 microseconds...Sleep::for(5000)->microseconds(); // Pause execution until a given time...Sleep::until(now()->addMinute()); // Alias of PHP's native "sleep" function...Sleep::sleep(2); // Alias of PHP's native "usleep" function...Sleep::usleep(5000);
時間の単位を簡単に組み合わせるには、and
メソッドを使用できます。
Sleep::for(1)->second()->and(10)->milliseconds();
Sleepのテスト
Sleep
クラスまたはPHPネイティブのsleep関数を利用するコードをテストする場合、テストの実行が一時停止されます。ご想像のとおり、これによりテストスイートが大幅に遅くなります。たとえば、次のコードをテストしていると想像してください。
$waiting = /* ... */; $seconds = 1; while ($waiting) { Sleep::for($seconds++)->seconds(); $waiting = /* ... */;}
通常、このコードをテストするには、少なくとも1秒かかります。幸いなことに、Sleep
クラスを使用すると、テストスイートを高速に保つためにスリープを「偽装」できます。
it('waits until ready', function () { Sleep::fake(); // ...});
public function test_it_waits_until_ready(){ Sleep::fake(); // ...}
Sleep
クラスを偽装すると、実際の実行の一時停止がバイパスされ、テストが大幅に高速化されます。
Sleep
クラスが偽装されたら、発生するはずの予期された「スリープ」に対してアサーションを行うことができます。これを説明するために、実行が3回一時停止し、各一時停止が1秒ずつ増加するコードをテストしていると想像しましょう。assertSequence
メソッドを使用すると、テストを高速に保ちながら、コードが適切な時間「スリープ」したことをアサートできます。
it('checks if ready three times', function () { Sleep::fake(); // ... Sleep::assertSequence([ Sleep::for(1)->second(), Sleep::for(2)->seconds(), Sleep::for(3)->seconds(), ]);}
public function test_it_checks_if_ready_three_times(){ Sleep::fake(); // ... Sleep::assertSequence([ Sleep::for(1)->second(), Sleep::for(2)->seconds(), Sleep::for(3)->seconds(), ]);}
もちろん、Sleep
クラスは、テスト時に使用できるさまざまな他のアサーションを提供します。
use Carbon\CarbonInterval as Duration;use Illuminate\Support\Sleep; // Assert that sleep was called 3 times...Sleep::assertSleptTimes(3); // Assert against the duration of sleep...Sleep::assertSlept(function (Duration $duration): bool { return /* ... */;}, times: 1); // Assert that the Sleep class was never invoked...Sleep::assertNeverSlept(); // Assert that, even if Sleep was called, no execution paused occurred...Sleep::assertInsomniac();
アプリケーションコードで偽のスリープが発生するたびにアクションを実行すると便利な場合があります。これを実現するには、whenFakingSleep
メソッドにコールバックを提供できます。次の例では、Laravelの時間操作ヘルパーを使用して、各スリープの期間だけ時間を即座に進めます。
use Carbon\CarbonInterval as Duration; $this->freezeTime(); Sleep::fake(); Sleep::whenFakingSleep(function (Duration $duration) { // Progress time when faking sleep... $this->travel($duration->totalMilliseconds)->milliseconds();});
時間の進行は一般的な要件であるため、fake
メソッドは、テスト内でスリープするときにCarbonを同期させるためのsyncWithCarbon
引数を受け入れます。
Sleep::fake(syncWithCarbon: true); $start = now(); Sleep::for(1)->second(); $start->diffForHumans(); // 1 second ago
Laravelは、実行を一時停止するときは常に内部でSleep
クラスを使用します。たとえば、retry
ヘルパーは、スリープ時にSleep
クラスを使用するため、そのヘルパーを使用する際のテスト性を向上させることができます。