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::only
- Arr::pluck
- Arr::prepend
- Arr::prependKeysWith
- Arr::pull
- Arr::query
- Arr::random
- Arr::set
- Arr::shuffle
- Arr::sort
- Arr::sortRecursive
- Arr::toCssClasses
- Arr::undot
- Arr::where
- Arr::whereNotNull
- Arr::wrap
- data_fill
- data_get
- data_set
- head
- last
- __
- class_basename
- e
- preg_replace_array
- Str::after
- Str::afterLast
- Str::ascii
- Str::before
- Str::beforeLast
- Str::between
- Str::betweenFirst
- Str::camel
- Str::contains
- Str::containsAll
- Str::endsWith
- Str::excerpt
- Str::finish
- Str::headline
- Str::inlineMarkdown
- Str::is
- Str::isAscii
- Str::isJson
- Str::isUlid
- Str::isUuid
- Str::kebab
- Str::lcfirst
- Str::length
- Str::limit
- Str::lower
- Str::markdown
- Str::mask
- Str::orderedUuid
- Str::padBoth
- Str::padLeft
- Str::padRight
- Str::plural
- Str::pluralStudly
- Str::random
- Str::remove
- Str::replace
- Str::replaceArray
- Str::replaceFirst
- Str::replaceLast
- Str::reverse
- Str::singular
- Str::slug
- Str::snake
- Str::squish
- Str::start
- Str::startsWith
- Str::studly
- Str::substr
- Str::substrCount
- Str::substrReplace
- Str::swap
- Str::title
- Str::toHtmlString
- Str::ucfirst
- Str::ucsplit
- Str::upper
- Str::ulid
- Str::uuid
- Str::wordCount
- Str::words
- str
- trans
- trans_choice
- after
- afterLast
- append
- ascii
- basename
- before
- beforeLast
- between
- betweenFirst
- camel
- classBasename
- contains
- containsAll
- dirname
- endsWith
- excerpt
- exactly
- explode
- finish
- headline
- inlineMarkdown
- is
- isAscii
- isEmpty
- isNotEmpty
- isJson
- isUlid
- isUuid
- kebab
- lcfirst
- length
- limit
- lower
- ltrim
- markdown
- mask
- match
- matchAll
- newLine
- padBoth
- padLeft
- padRight
- pipe
- plural
- prepend
- remove
- replace
- replaceArray
- replaceFirst
- replaceLast
- replaceMatches
- rtrim
- scan
- singular
- slug
- snake
- split
- squish
- start
- startsWith
- studly
- substr
- substrReplace
- swap
- tap
- test
- title
- trim
- ucfirst
- ucsplit
- upper
- when
- whenContains
- whenContainsAll
- whenEmpty
- whenNotEmpty
- whenStartsWith
- whenEndsWith
- whenExactly
- whenNotExactly
- whenIs
- whenIsAscii
- whenIsUlid
- whenIsUuid
- whenTest
- wordCount
- words
- abort
- abort_if
- abort_unless
- app
- auth
- back
- bcrypt
- blank
- broadcast
- cache
- class_uses_recursive
- collect
- config
- cookie
- csrf_field
- csrf_token
- decrypt
- dd
- dispatch
- dump
- encrypt
- env
- event
- fake
- filled
- info
- logger
- method_field
- now
- old
- 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
Метод 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
добавляет переданную пару ключ / значение в массив, если указанный ключ еще не существует в массиве или установлен как 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
сворачивает массив массивов в один массив:
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
перекрестно соединяет указанные массивы, возвращая декартово произведение со всеми возможными перестановками:
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
возвращает два массива: один содержит ключи, а другой – значения переданного массива:
use Illuminate\Support\Arr;
[$keys, $values] = Arr::divide(['name' => 'Desk']);
// $keys: ['name']
// $values: ['Desk']
Метод Arr::dot
объединяет многомерный массив в одноуровневый, использующий «точечную нотацию» для обозначения глубины:
use Illuminate\Support\Arr;
$array = ['products' => ['desk' => ['price' => 100]]];
$flattened = Arr::dot($array);
// ['products.desk.price' => 100]
Метод Arr::except
удаляет переданные пары ключ / значение из массива:
use Illuminate\Support\Arr;
$array = ['name' => 'Desk', 'price' => 100];
$filtered = Arr::except($array, ['price']);
// ['name' => 'Desk']
Метод 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
возвращает первый элемент массива, прошедший тест переданного замыкания на истинность:
use Illuminate\Support\Arr;
$array = [100, 200, 300];
$first = Arr::first($array, function ($value, $key) {
return $value >= 150;
});
// 200
Значение по умолчанию может быть передано в качестве третьего аргумента методу. Это значение будет возвращено, если ни одно из значений не пройдет проверку на истинность:
use Illuminate\Support\Arr;
$first = Arr::first($array, $callback, $default);
Метод Arr::flatten
объединяет многомерный массив в одноуровневый:
use Illuminate\Support\Arr;
$array = ['name' => 'Joe', 'languages' => ['PHP', 'Ruby']];
$flattened = Arr::flatten($array);
// ['Joe', 'PHP', 'Ruby']
Метод Arr::forget
удаляет переданную пару ключ / значение из глубоко вложенного массива, используя «точечную нотацию»:
use Illuminate\Support\Arr;
$array = ['products' => ['desk' => ['price' => 100]]];
Arr::forget($array, 'products.desk');
// ['products' => []]
Метод 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
проверяет, существует ли переданный элемент или элементы в массиве, используя «точечную нотацию»:
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
проверяет, существует ли какой-либо элемент в переданном наборе в массиве, используя «точечную нотацию»:
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
возвращает true
, если переданный массив является ассоциативным. Массив считается ассоциативным, если в нем нет последовательных цифровых ключей, начинающихся с нуля:
use Illuminate\Support\Arr;
$isAssoc = Arr::isAssoc(['product' => ['name' => 'Desk', 'price' => 100]]);
// true
$isAssoc = Arr::isAssoc([1, 2, 3]);
// false
Метод 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
объединяет элементы массива в строку. Используя третий аргумент метода, вы также можете указать объединяющую строку для последнего элемента массива:
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
группирует массив по значениям переданного ключа. Если несколько элементов имеют один и тот же ключ, в новом массиве появится только последний:
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
возвращает последний элемент массива, прошедший тест переданного замыкания на истинность:
use Illuminate\Support\Arr;
$array = [100, 200, 300, 110];
$last = Arr::last($array, function ($value, $key) {
return $value >= 150;
});
// 300
Значение по умолчанию может быть передано в качестве третьего аргумента методу. Это значение будет возвращено, если ни одно из значений не пройдет проверку на истинность:
use Illuminate\Support\Arr;
$last = Arr::last($array, $callback, $default);
Метод Arr::map
перебирает массив и передает каждое значение и ключ указанному замыканию. Значение массива заменяется значением, которое было возвращено замыканием:
use Illuminate\Support\Arr;
$array = ['first' => 'james', 'last' => 'kirk'];
$mapped = Arr::map($array, function ($value, $key) {
return ucfirst($value);
});
// ['first' => 'James', 'last' => 'Kirk']
Метод 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
извлекает все значения для указанного ключа из массива:
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
помещает элемент в начало массива:
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
добавляет ко всем именам ключей ассоциативного массива переданный префикс:
use Illuminate\Support\Arr;
$array = [
'name' => 'Desk',
'price' => 100,
];
$keyed = Arr::prependKeysWith($array, 'product.');
/*
[
'product.name' => 'Desk',
'product.price' => 100,
]
*/
Метод Arr::pull
возвращает и удаляет пару ключ / значение из массива:
use Illuminate\Support\Arr;
$array = ['name' => 'Desk', 'price' => 100];
$name = Arr::pull($array, 'name');
// $name: Desk
// $array: ['price' => 100]
Значение по умолчанию может быть передано в качестве третьего аргумента методу. Это значение будет возвращено, если ключ не существует:
use Illuminate\Support\Arr;
$value = Arr::pull($array, $key, $default);
Метод 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
возвращает случайное значение из массива:
use Illuminate\Support\Arr;
$array = [1, 2, 3, 4, 5];
$random = Arr::random($array);
// 4 - (retrieved randomly)
Вы также можете указать количество элементов для возврата в качестве необязательного второго аргумента. Обратите внимание, что при указании этого аргумента, будет возвращен массив, даже если требуется только один элемент:
use Illuminate\Support\Arr;
$items = Arr::random($array, 2);
// [2, 5] - (retrieved randomly)
Метод Arr::set
устанавливает значение с помощью «точечной нотации» во вложенном массиве:
use Illuminate\Support\Arr;
$array = ['products' => ['desk' => ['price' => 100]]];
Arr::set($array, 'products.desk.price', 200);
// ['products' => ['desk' => ['price' => 200]]]
Метод Arr::shuffle
случайным образом перемешивает элементы в массиве:
use Illuminate\Support\Arr;
$array = Arr::shuffle([1, 2, 3, 4, 5]);
// [3, 2, 5, 1, 4] - (generated randomly)
Метод 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 ($value) {
return $value['name'];
}));
/*
[
['name' => 'Chair'],
['name' => 'Desk'],
['name' => 'Table'],
]
*/
Метод 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::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'
*/
Этот метод обеспечивает функциональность Laravel, позволяя объединять классы с коллекцией атрибутов компонента Blade, а также использовать директиву @class
Blade.
Метод 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
фильтрует массив, используя переданное замыкание:
use Illuminate\Support\Arr;
$array = [100, '200', 300, '400', 500];
$filtered = Arr::where($array, function ($value, $key) {
return is_string($value);
});
// [1 => '200', 3 => '400']
Метод Arr::whereNotNull
удаляет все null
-значения массива:
use Illuminate\Support\Arr;
$array = [0, null];
$filtered = Arr::whereNotNull($array);
// [0 => 0]
Метод 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 = ['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 = ['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'];
Функция 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],
],
]
*/
По умолчанию все существующие значения перезаписываются. Если вы хотите, чтобы значение было установлено только в том случае, если оно не существует, вы можете передать false
в качестве четвертого аргумента:
$data = ['products' => ['desk' => ['price' => 100]]];
data_set($data, 'products.desk.price', 200, overwrite: false);
// ['products' => ['desk' => ['price' => 100]]]
Функция head
возвращает первый элемент переданного массива:
$array = [100, 200, 300];
$first = head($array);
// 100
Функция last
возвращает последний элемент переданного массива:
$array = [100, 200, 300];
$last = last($array);
// 300
Функция app_path
возвращает полный путь к каталогу вашего приложения app
. Вы также можете использовать функцию app_path
для создания полного пути к файлу относительно каталога приложения:
$path = app_path();
$path = app_path('Http/Controllers/Controller.php');
Функция base_path
возвращает полный путь к корневому каталогу вашего приложения. Вы также можете использовать функцию base_path
для генерации полного пути к заданному файлу относительно корневого каталога проекта:
$path = base_path();
$path = base_path('vendor/bin');
Функция config_path
возвращает полный путь к каталогу config
вашего приложения. Вы также можете использовать функцию config_path
для создания полного пути к заданному файлу в каталоге конфигурации приложения:
$path = config_path();
$path = config_path('app.php');
Функция database_path
возвращает полный путь к каталогу database
вашего приложения. Вы также можете использовать функцию database_path
для генерации полного пути к заданному файлу в каталоге базы данных:
$path = database_path();
$path = database_path('factories/UserFactory.php');
Функция lang_path
возвращает полный путь к каталогу lang
вашего приложения. Вы также можете использовать функцию lang_path
для создания полного пути к конкретному файлу в каталоге:
$path = lang_path();
$path = lang_path('en/messages.php');
Функция mix
возвращает путь к версионированному файлу Mix:
$path = mix('css/app.css');
Функция public_path
возвращает полный путь к каталогу public
вашего приложения. Вы также можете использовать функцию public_path
для генерации полного пути к заданному файлу в публичном каталоге:
$path = public_path();
$path = public_path('css/app.css');
Функция resource_path
возвращает полный путь к каталогу resources
вашего приложения. Вы также можете использовать функцию resource_path
, чтобы сгенерировать полный путь к заданному файлу в каталоге исходников:
$path = resource_path();
$path = resource_path('sass/app.scss');
Функция storage_path
возвращает полный путь к каталогу storage
вашего приложения. Вы также можете использовать функцию storage_path
для генерации полного пути к заданному файлу в каталоге хранилища:
$path = storage_path();
$path = storage_path('app/file.txt');
Функция __
переводит переданную строку перевода или ключ перевода, используя ваши файлы локализации:
echo __('Welcome to our application');
echo __('messages.welcome');
Если указанная строка перевода или ключ не существует, то функция __
вернет переданное значение. Итак, используя приведенный выше пример, функция __
вернет messages.welcome
, если этот ключ перевода не существует.
Функция class_basename
возвращает имя переданного класса с удаленным пространством имен этого класса:
$class = class_basename('Foo\Bar\Baz');
// Baz
Функция e
запускает PHP-функцию htmlspecialchars
с параметром double_encode
, установленным по умолчанию в true
:
echo e('<html>foo</html>');
// <html>foo</html>
Функция preg_replace_array
последовательно заменяет переданный шаблон в строке, используя массив:
$string = 'The event will take place between :start and :end';
$replaced = preg_replace_array('/:[a-z_]+/', ['8:30', '9:00'], $string);
// The event will take place between 8:30 and 9:00
Метод Str::after
возвращает все после переданного значения в строке. Если значение не существует в строке, то будет возвращена вся строка:
use Illuminate\Support\Str;
$slice = Str::after('This is my name', 'This is');
// ' my name'
Метод Str::afterLast
возвращает все после последнего вхождения переданного значения в строке. Если значение не существует в строке, то будет возвращена вся строка:
use Illuminate\Support\Str;
$slice = Str::afterLast('App\Http\Controllers\Controller', '\\');
// 'Controller'
Метод Str::ascii
попытается транслитерировать строку в ASCII значение:
use Illuminate\Support\Str;
$slice = Str::ascii('û');
// 'u'
Метод Str :: before
возвращает все до переданного значения в строке:
use Illuminate\Support\Str;
$slice = Str::before('This is my name', 'my name');
// 'This is '
Метод Str::beforeLast
возвращает все до последнего вхождения переданного значения в строке:
use Illuminate\Support\Str;
$slice = Str::beforeLast('This is my name', 'is');
// 'This '
Метод Str::between
возвращает часть строки между двумя значениями:
use Illuminate\Support\Str;
$slice = Str::between('This is my name', 'This', 'name');
// ' is my '
Метод Str::betweenFirst
возвращает наименьшую возможную часть строки между двумя значениями:
use Illuminate\Support\Str;
$slice = Str::betweenFirst('[a] bc [d]', '[', ']');
// 'a'
Метод Str::camel
преобразует переданную строку в camelCase
:
use Illuminate\Support\Str;
$converted = Str::camel('foo_bar');
// fooBar
Метод Str::contains
определяет, содержит ли переданная строка указанное значение (с учетом регистра):
use Illuminate\Support\Str;
$contains = Str::contains('This is my name', 'my');
// true
Вы также можете указать массив значений, чтобы определить, содержит ли переданная строка какое-либо из значений:
use Illuminate\Support\Str;
$contains = Str::contains('This is my name', ['my', 'foo']);
// true
Метод Str::containsAll
определяет, содержит ли переданная строка все значения массива:
use Illuminate\Support\Str;
$containsAll = Str::containsAll('This is my name', ['my', 'name']);
// true
Метод Str::endsWith
определяет, заканчивается ли переданная строка указанным значением:
use Illuminate\Support\Str;
$result = Str::endsWith('This is my name', 'name');
// true
Вы также можете указать массив значений, чтобы определить, заканчивается ли переданная строка каким-либо из значений:
use Illuminate\Support\Str;
$result = Str::endsWith('This is my name', ['name', 'foo']);
// true
$result = Str::endsWith('This is my name', ['this', 'foo']);
// false
Метод Str::excerpt
извлекает отрывок из переданной строки, который соответствует первому экземпляру фразы в этой строке:
use Illuminate\Support\Str;
$excerpt = Str::excerpt('This is my name', 'my', [
'radius' => 3
]);
// '...is my na...'
Параметр radius
, который по умолчанию равен 100
, позволяет вам определить количество символов, которые должны присутствовать с каждой стороны усеченной строки.
Кроме того, вы можете использовать параметр omission
, чтобы определить строку, которая будет добавлена к усеченной строке:
use Illuminate\Support\Str;
$excerpt = Str::excerpt('This is my name', 'name', [
'radius' => 3,
'omission' => '(...) '
]);
// '(...) my name'
Метод Str::finish
добавляет один экземпляр указанного значения в переданную строку, если она еще не заканчивается этим значением:
use Illuminate\Support\Str;
$adjusted = Str::finish('this/string', '/');
// this/string/
$adjusted = Str::finish('this/string/', '/');
// this/string/
Метод Str::headline
преобразует строки, разделенные регистром, дефисами или подчеркиванием, в строку, разделенную пробелами, с заглавной первой буквой каждого слова:
use Illuminate\Support\Str;
$headline = Str::headline('steve_jobs');
// Steve Jobs
$headline = Str::headline('EmailNotificationSent');
// Email Notification Sent
Метод Str::inlineMarkdown
конвертирует текст с разметкой GitHub flavored Markdown в строку HTML с помощью CommonMark. Однако, в отличие от метода markdown
, он не заключает весь сгенерированный HTML в блочный элемент:
use Illuminate\Support\Str;
$html = Str::inlineMarkdown('**Laravel**');
// <strong>Laravel</strong>
Метод Str::is
определяет, соответствует ли переданная строка указанному шаблону. Допускается использование метасимвола подстановки *
:
use Illuminate\Support\Str;
$matches = Str::is('foo*', 'foobar');
// true
$matches = Str::is('baz*', 'foobar');
// false
Метод Str::isAscii
определяет, является ли переданная строка 7-битной ASCII:
use Illuminate\Support\Str;
$isAscii = Str::isAscii('Taylor');
// true
$isAscii = Str::isAscii('ü');
// false
Метод Str::isJson
определяет, является ли переданная строка корректно закодированной в формат JSON:
use Illuminate\Support\Str;
$result = Str::isJson('[1,2,3]');
// true
$result = Str::isJson('{"first": "John", "last": "Doe"}');
// true
$result = Str::isJson('{first: "John", last: "Doe"}');
// false
Метод Str::isUlid
определяет, является ли переданная строка допустимым ULID:
use Illuminate\Support\Str;
$isUlid = Str::isUlid('01gd6r360bp37zj17nxb55yv40');
// true
$isUlid = Str::isUlid('laravel');
// false
Метод Str::isUuid
определяет, является ли переданная строка допустимым UUID:
use Illuminate\Support\Str;
$isUuid = Str::isUuid('a0a2a2d2-0b87-4a18-83f2-2529882be2de');
// true
$isUuid = Str::isUuid('laravel');
// false
Метод Str::kebab
преобразует переданную строку в kebab-case
:
use Illuminate\Support\Str;
$converted = Str::kebab('fooBar');
// foo-bar
Метод Str::lcfirst
возвращает переданную строку с первым символом в нижнем регистре:
use Illuminate\Support\Str;
$string = Str::lcfirst('Foo Bar');
// foo Bar
Метод Str::length
возвращает длину переданной строки:
use Illuminate\Support\Str;
$length = Str::length('Laravel');
// 7
Метод Str::limit
усекает переданную строку до указанной длины:
use Illuminate\Support\Str;
$truncated = Str::limit('The quick brown fox jumps over the lazy dog', 20);
// The quick brown fox...
Вы также можете передать третий строковый аргумент, содержимое которого будет добавлено в конец:
use Illuminate\Support\Str;
$truncated = Str::limit('The quick brown fox jumps over the lazy dog', 20, ' (...)');
// The quick brown fox (...)
Метод Str::lower
преобразует переданную строку в нижний регистр:
use Illuminate\Support\Str;
$converted = Str::lower('LARAVEL');
// laravel
Метод Str::markdown
конвертирует текст с разметкой GitHub flavored Markdown в HTML с помощью CommonMark:
use Illuminate\Support\Str;
$html = Str::markdown('# Laravel');
// <h1>Laravel</h1>
$html = Str::markdown('# Taylor <b>Otwell</b>', [
'html_input' => 'strip',
]);
// <h1>Taylor Otwell</h1>
Метод Str::mask
маскирует часть строки повторяющимся символом и может использоваться для обфускации сегментов строк, таких как адреса электронной почты и номера телефонов:
use Illuminate\Support\Str;
$string = Str::mask('[email protected]', '*', 3);
// tay***************
При необходимости вы можете указать отрицательное число в качестве третьего аргумента метода mask
, который даст указание методу начать маскировку на заданном расстоянии от конца строки:
$string = Str::mask('[email protected]', '*', -15, 3);
// tay***@example.com
Метод Str::orderedUuid
генерирует UUID с «префиксом временной метки», который может быть эффективно сохранен в индексированном столбце базы данных. Каждый UUID, созданный с помощью этого метода, будет отсортирован после UUID, ранее созданных с помощью этого метода:
use Illuminate\Support\Str;
return (string) Str::orderedUuid();
Метод Str::padBoth
оборачивает функцию str_pad
PHP, заполняя обе стороны строки другой строкой, пока конечная строка не достигнет желаемой длины:
use Illuminate\Support\Str;
$padded = Str::padBoth('James', 10, '_');
// '__James___'
$padded = Str::padBoth('James', 10);
// ' James '
Метод Str::padLeft
оборачивает функцию str_pad
PHP, заполняя левую часть строки другой строкой, пока конечная строка не достигнет желаемой длины:
use Illuminate\Support\Str;
$padded = Str::padLeft('James', 10, '-=');
// '-=-=-James'
$padded = Str::padLeft('James', 10);
// ' James'
Метод Str::padRight
оборачивает функцию str_pad
PHP, заполняя правую часть строки другой строкой, пока конечная строка не достигнет желаемой длины:
use Illuminate\Support\Str;
$padded = Str::padRight('James', 10, '-');
// 'James-----'
$padded = Str::padRight('James', 10);
// 'James '
Метод Str::plural
преобразует слово в форму множественного числа. Этот метод поддерживает любой из языков, доступных построителю слов во множественном числе Laravel:
use Illuminate\Support\Str;
$plural = Str::plural('car');
// cars
$plural = Str::plural('child');
// children
Вы можете передать целое число в качестве второго аргумента метода для получения строки в единственном или множественном числе:
use Illuminate\Support\Str;
$plural = Str::plural('child', 2);
// children
$singular = Str::plural('child', 1);
// child
Метод Str::pluralStudly
преобразует строку единственного числа формата StudlyCase
в форму множественного числа. Этот метод поддерживает любой из языков, доступных построителю слов во множественном числе Laravel:
use Illuminate\Support\Str;
$plural = Str::pluralStudly('VerifiedHuman');
// VerifiedHumans
$plural = Str::pluralStudly('UserFeedback');
// UserFeedback
Вы можете передать целое число в качестве второго аргумента метода для получения строки в единственном или множественном числе:
use Illuminate\Support\Str;
$plural = Str::pluralStudly('VerifiedHuman', 2);
// VerifiedHumans
$singular = Str::pluralStudly('VerifiedHuman', 1);
// VerifiedHuman
Метод Str::random
генерирует случайную строку указанной длины. Этот метод использует функцию random_bytes
PHP:
use Illuminate\Support\Str;
$random = Str::random(40);
Метод Str::remove
удаляет указанную подстроку или массив подстрок в строке:
use Illuminate\Support\Str;
$string = 'Peter Piper picked a peck of pickled peppers.';
$removed = Str::remove('e', $string);
// Ptr Pipr pickd a pck of pickld ppprs.
Вы можете передать false
в качестве третьего аргумента для игнорирования регистра удаляемых подстрок.
Метод Str::replace
заменяет указанное значение в строке:
use Illuminate\Support\Str;
$string = 'Laravel 8.x';
$replaced = Str::replace('8.x', '9.x', $string);
// Laravel 9.x
Метод Str::replaceArray
последовательно заменяет указанное значение в строке, используя массив:
use Illuminate\Support\Str;
$string = 'The event will take place between ? and ?';
$replaced = Str::replaceArray('?', ['8:30', '9:00'], $string);
// The event will take place between 8:30 and 9:00
Метод Str::replaceFirst
заменяет первое вхождение переданного значения в строке:
use Illuminate\Support\Str;
$replaced = Str::replaceFirst('the', 'a', 'the quick brown fox jumps over the lazy dog');
// a quick brown fox jumps over the lazy dog
Метод Str::replaceLast
заменяет последнее вхождение переданного значения в строке:
use Illuminate\Support\Str;
$replaced = Str::replaceLast('the', 'a', 'the quick brown fox jumps over the lazy dog');
// the quick brown fox jumps over a lazy dog
Метод Str::reverse
переворачивает переданную строку:
use Illuminate\Support\Str;
$reversed = Str::reverse('Hello World');
// dlroW olleH
Метод Str::singular
преобразует слово в форму единственного числа. Этот метод поддерживает любой из языков, доступных построителю слов во множественном числе Laravel:
use Illuminate\Support\Str;
$singular = Str::singular('cars');
// car
$singular = Str::singular('children');
// child
Метод Str::slug
создает «дружественный фрагмент» URL-адреса из переданной строки:
use Illuminate\Support\Str;
$slug = Str::slug('Laravel 5 Framework', '-');
// laravel-5-framework
Метод Str::snake
преобразует переданную строку в snake_case
:
use Illuminate\Support\Str;
$converted = Str::snake('fooBar');
// foo_bar
$converted = Str::snake('fooBar', '-');
// foo-bar
Метод Str::squish
удаляет все лишние пробелы из строки, включая лишние пробелы между словами:
use Illuminate\Support\Str;
$string = Str::squish(' laravel framework ');
// laravel framework
Метод Str::start
добавляет один экземпляр указанного значения в переданную строку, если она еще не начинается этим значением:
use Illuminate\Support\Str;
$adjusted = Str::start('this/string', '/');
// /this/string
$adjusted = Str::start('/this/string', '/');
// /this/string
Метод Str::startsWith
определяет, начинается ли переданная строка с указанного значения:
use Illuminate\Support\Str;
$result = Str::startsWith('This is my name', 'This');
// true
Если передан массив возможных значений, то метод startsWith
вернет true
, если строка начинается с любого из указанных значений:
$result = Str::startsWith('This is my name', ['This', 'That', 'There']);
// true
Метод Str::studly
преобразует переданную строку в StudlyCase
:
use Illuminate\Support\Str;
$converted = Str::studly('foo_bar');
// FooBar
Метод Str::substr
возвращает часть строки, заданную параметрами «начало» и «длина»:
use Illuminate\Support\Str;
$converted = Str::substr('The Laravel Framework', 4, 7);
// Laravel
Метод Str::substrCount
возвращает число вхождений подстроки в строку:
use Illuminate\Support\Str;
$count = Str::substrCount('If you like ice cream, you will like snow cones.', 'like');
// 2
Метод Str::substrReplace
заменяет часть строки, начиная с позиции, указанной третьим аргументом, и заменяет число символов, указанное четвертым аргументом. Передача 0
в четвертый аргумент метода вставит строку в указанную позицию без замены каких-либо существующих символов в строке:
use Illuminate\Support\Str;
$result = Str::substrReplace('1300', ':', 2);
// 13:
$result = Str::substrReplace('1300', ':', 2, 0);
// 13:00
Метод Str::swap
заменяет несколько значений в переданной строке, используя функцию strtr
PHP:
use Illuminate\Support\Str;
$string = Str::swap([
'Tacos' => 'Burritos',
'great' => 'fantastic',
], 'Tacos are great!');
// Burritos are fantastic!
Метод Str::title
преобразует переданную строку в Title Case
:
use Illuminate\Support\Str;
$converted = Str::title('a nice title uses the correct case');
// A Nice Title Uses The Correct Case
Метод Str::toHtmlString
преобразует экземпляр строки в экземпляр Illuminate\Support\HtmlString
, который может быть отображен в шаблонах Blade:
use Illuminate\Support\Str;
$htmlString = Str::of('Nuno Maduro')->toHtmlString();
Метод Str::ucfirst
возвращает переданную строку с первой заглавной буквой:
use Illuminate\Support\Str;
$string = Str::ucfirst('foo bar');
// Foo bar
Метод Str::ucsplit
разбивает переданную строку на массив по символам верхнего регистра:
use Illuminate\Support\Str;
$segments = Str::ucsplit('FooBar');
// [0 => 'Foo', 1 => 'Bar']
Метод Str::upper
преобразует переданную строку в верхний регистр:
use Illuminate\Support\Str;
$string = Str::upper('laravel');
// LARAVEL
Метод Str::ulid
генерирует ULID:
use Illuminate\Support\Str;
return (string) Str::ulid();
// 01gd6r360bp37zj17nxb55yv40
Метод Str::uuid
генерирует UUID (версия 4):
use Illuminate\Support\Str;
return (string) Str::uuid();
Метод Str::wordCount
возвращает количество слов, содержащихся в строке:
use Illuminate\Support\Str;
Str::wordCount('Hello, world!'); // 2
Метод Str::words
ограничивает количество слов в строке. Дополнительная строка может быть передана этому методу через его третий аргумент, чтобы указать, какая строка должна быть добавлена в конец усеченной строки:
use Illuminate\Support\Str;
return Str::words('Perfectly balanced, as all things should be.', 3, ' >>>');
// Perfectly balanced, as >>>
Функция str
возвращает новый экземпляр Illuminate\Support\Stringable
переданной строки. Эта функция эквивалентна методу Str::of
:
$string = str('Taylor')->append(' Otwell');
// 'Taylor Otwell'
Если для функции str
не указан аргумент, то функция возвращает экземпляр Illuminate\Support\Str
:
$snake = str()->snake('FooBar');
// 'foo_bar'
Функция trans
переводит переданный ключ перевода, используя ваши файлы локализации:
echo trans('messages.welcome');
Если указанный ключ перевода не существует, функция trans
вернет данный ключ. Итак, используя приведенный выше пример, функция trans
вернет messages.welcome
, если ключ перевода не существует.
Функция trans_choice
переводит заданный ключ перевода с изменением формы слова:
echo trans_choice('messages.notifications', $unreadCount);
Если указанный ключ перевода не существует, функция trans_choice
вернет данный ключ. Итак, используя приведенный выше пример, функция trans_choice
вернет messages.notifications
, если ключ перевода не существует.
Строки Fluent обеспечивают более гибкий объектно-ориентированный интерфейс для работы со строковыми значениями, позволяя объединять несколько строковых операций вместе с использованием более удобочитаемого синтаксиса по сравнению с традиционными строковыми операциями.
Метод after
возвращает все после переданного значения в строке. Вся строка будет возвращена, если значение не существует в строке:
use Illuminate\Support\Str;
$slice = Str::of('This is my name')->after('This is');
// ' my name'
Метод afterLast
возвращает все после последнего вхождения переданного значения в строке. Вся строка будет возвращена, если значение не существует в строке:
use Illuminate\Support\Str;
$slice = Str::of('App\Http\Controllers\Controller')->afterLast('\\');
// 'Controller'
Метод append
добавляет указанные значения в строку:
use Illuminate\Support\Str;
$string = Str::of('Taylor')->append(' Otwell');
// 'Taylor Otwell'
Метод ascii
попытается транслитерировать строку в значение ASCII:
use Illuminate\Support\Str;
$string = Str::of('ü')->ascii();
// 'u'
Метод basename
вернет завершающий компонент имени переданной строки:
use Illuminate\Support\Str;
$string = Str::of('/foo/bar/baz')->basename();
// 'baz'
При необходимости вы можете указать «расширение», которое будет удалено из завершающего компонента:
use Illuminate\Support\Str;
$string = Str::of('/foo/bar/baz.jpg')->basename('.jpg');
// 'baz'
Метод before
возвращает все до указанного значения в строке:
use Illuminate\Support\Str;
$slice = Str::of('This is my name')->before('my name');
// 'This is '
Метод beforeLast
возвращает все до последнего вхождения переданного значения в строку:
use Illuminate\Support\Str;
$slice = Str::of('This is my name')->beforeLast('is');
// 'This '
Метод between
возвращает часть строки между двумя значениями:
use Illuminate\Support\Str;
$converted = Str::of('This is my name')->between('This', 'name');
// ' is my '
Метод betweenFirst
возвращает наименьшую возможную часть строки между двумя значениями:
use Illuminate\Support\Str;
$converted = Str::of('[a] bc [d]')->betweenFirst('[', ']');
// 'a'
Метод camel
преобразует переданную строку в camelCase
:
use Illuminate\Support\Str;
$converted = Str::of('foo_bar')->camel();
// fooBar
Метод classBasename
возвращает имя класса переданного класса с удаленным пространством имен класса:
use Illuminate\Support\Str;
$class = Str::of('Foo\Bar\Baz')->classBasename();
// Baz
Метод contains
определяет, содержит ли переданная строка указанное значение (с учетом регистра):
use Illuminate\Support\Str;
$contains = Str::of('This is my name')->contains('my');
// true
Вы также можете указать массив значений, чтобы определить, содержит ли переданная строка какое-либо из этих значений:
use Illuminate\Support\Str;
$contains = Str::of('This is my name')->contains(['my', 'foo']);
// true
Метод containsAll
определяет, содержит ли переданная строка все значения массива:
use Illuminate\Support\Str;
$containsAll = Str::of('This is my name')->containsAll(['my', 'name']);
// true
Метод dirname
возвращает родительскую часть директории переданной строки:
use Illuminate\Support\Str;
$string = Str::of('/foo/bar/baz')->dirname();
// '/foo/bar'
При желании вы можете указать, сколько уровней каталогов вы хотите вырезать из строки:
use Illuminate\Support\Str;
$string = Str::of('/foo/bar/baz')->dirname(2);
// '/foo'
Метод excerpt
извлекает отрывок из переданной строки, который соответствует первому экземпляру фразы в этой строке:
use Illuminate\Support\Str;
$excerpt = Str::of('This is my name')->excerpt('my', [
'radius' => 3
]);
// '...is my na...'
Параметр radius
, который по умолчанию равен 100
, позволяет вам определить количество символов, которые должны присутствовать с каждой стороны усеченной строки.
Кроме того, вы можете использовать параметр omission
, чтобы определить строку, которая будет добавлена к усеченной строке:
use Illuminate\Support\Str;
$excerpt = Str::of('This is my name')->excerpt('name', [
'radius' => 3,
'omission' => '(...) '
]);
// '(...) my name'
Метод endsWith
определяет, заканчивается ли переданная строка указанным значением:
use Illuminate\Support\Str;
$result = Str::of('This is my name')->endsWith('name');
// true
Вы также можете указать массив значений, чтобы определить, заканчивается ли переданная строка каким-либо из указанных значений:
use Illuminate\Support\Str;
$result = Str::of('This is my name')->endsWith(['name', 'foo']);
// true
$result = Str::of('This is my name')->endsWith(['this', 'foo']);
// false
Метод exactly
определяет, является ли переданная строка точным совпадением с другой строкой:
use Illuminate\Support\Str;
$result = Str::of('Laravel')->exactly('Laravel');
// true
Метод explode
разделяет строку по заданному разделителю и возвращает коллекцию, содержащую каждый раздел строки разбиения:
use Illuminate\Support\Str;
$collection = Str::of('foo bar baz')->explode(' ');
// collect(['foo', 'bar', 'baz'])
Метод finish
добавляет один экземпляр указанного значения в переданную строку, если она еще не заканчивается этим значением:
use Illuminate\Support\Str;
$adjusted = Str::of('this/string')->finish('/');
// this/string/
$adjusted = Str::of('this/string/')->finish('/');
// this/string/
The headline
method will convert strings delimited by casing, hyphens, or underscores into a space delimited string with each word's first letter capitalized:
use Illuminate\Support\Str;
$headline = Str::of('taylor_otwell')->headline();
// Taylor Otwell
$headline = Str::of('EmailNotificationSent')->headline();
// Email Notification Sent
Метод inlineMarkdown
конвертирует текст с разметкой GitHub flavored Markdown в строку HTML с помощью CommonMark. Однако, в отличие от метода markdown
, он не заключает весь сгенерированный HTML в блочный элемент:
use Illuminate\Support\Str;
$html = Str::of('**Laravel**')->inlineMarkdown();
// <strong>Laravel</strong>
Метод is
определяет, соответствует ли переданная строка указанному шаблону. Допускается использование метасимвола подстановки *
:
use Illuminate\Support\Str;
$matches = Str::of('foobar')->is('foo*');
// true
$matches = Str::of('foobar')->is('baz*');
// false
Метод isAscii
определяет, является ли переданная строка строкой ASCII:
use Illuminate\Support\Str;
$result = Str::of('Taylor')->isAscii();
// true
$result = Str::of('ü')->isAscii();
// false
Метод isEmpty
определяет, является ли переданная строка пустой:
use Illuminate\Support\Str;
$result = Str::of(' ')->trim()->isEmpty();
// true
$result = Str::of('Laravel')->trim()->isEmpty();
// false
Метод isNotEmpty
определяет, является ли переданная строка не пустой:
use Illuminate\Support\Str;
$result = Str::of(' ')->trim()->isNotEmpty();
// false
$result = Str::of('Laravel')->trim()->isNotEmpty();
// true
Метод isJson
определяет, является ли переданная строка корректно закодированной в формат JSON:
use Illuminate\Support\Str;
$result = Str::of('[1,2,3]')->isJson();
// true
$result = Str::of('{"first": "John", "last": "Doe"}')->isJson();
// true
$result = Str::of('{first: "John", last: "Doe"}')->isJson();
// false
Метод isUlid
определяет, является ли переданная строка допустимым ULID:
use Illuminate\Support\Str;
$result = Str::of('01gd6r360bp37zj17nxb55yv40')->isUlid();
// true
$result = Str::of('Taylor')->isUlid();
// false
Метод isUuid
определяет, является ли переданная строка строкой в формате UUID:
use Illuminate\Support\Str;
$result = Str::of('5ace9ab9-e9cf-4ec6-a19d-5881212a452c')->isUuid();
// true
$result = Str::of('Taylor')->isUuid();
// false
Метод kebab
преобразует переданную строку в kebab-case
:
use Illuminate\Support\Str;
$converted = Str::of('fooBar')->kebab();
// foo-bar
Метод lcfirst
возвращает переданную строку с первым символом в нижнем регистре:
use Illuminate\Support\Str;
$string = Str::of('Foo Bar')->lcfirst();
// foo Bar
Метод length
возвращает длину переданной строки:
use Illuminate\Support\Str;
$length = Str::of('Laravel')->length();
// 7
Метод limit
усекает переданную строку до указанной длины:
use Illuminate\Support\Str;
$truncated = Str::of('The quick brown fox jumps over the lazy dog')->limit(20);
// The quick brown fox...
Вы также можете передать второй строковый аргумент, содержимое которого будет добавлено в конец:
use Illuminate\Support\Str;
$truncated = Str::of('The quick brown fox jumps over the lazy dog')->limit(20, ' (...)');
// The quick brown fox (...)
Метод lower
преобразует переданную строку в нижний регистр:
use Illuminate\Support\Str;
$result = Str::of('LARAVEL')->lower();
// 'laravel'
Метод ltrim
удаляет символы из начала строки:
use Illuminate\Support\Str;
$string = Str::of(' Laravel ')->ltrim();
// 'Laravel '
$string = Str::of('/Laravel/')->ltrim('/');
// 'Laravel/'
Метод markdown
конвертирует текст с разметкой GitHub flavored Markdown в HTML:
use Illuminate\Support\Str;
$html = Str::of('# Laravel')->markdown();
// <h1>Laravel</h1>
$html = Str::of('# Taylor <b>Otwell</b>')->markdown([
'html_input' => 'strip',
]);
// <h1>Taylor Otwell</h1>
Метод mask
маскирует часть строки повторяющимся символом и может использоваться для обфускации сегментов строк, таких как адреса электронной почты и номера телефонов:
use Illuminate\Support\Str;
$string = Str::of('[email protected]')->mask('*', 3);
// tay***************
При необходимости вы можете указать отрицательное число в качестве третьего аргумента метода mask
, который даст указание методу начать маскировку на заданном расстоянии от конца строки:
$string = Str::of('[email protected]')->mask('*', -15, 3);
// tay***@example.com
Метод match
вернет часть строки, которая соответствует указанному шаблону регулярного выражения:
use Illuminate\Support\Str;
$result = Str::of('foo bar')->match('/bar/');
// 'bar'
$result = Str::of('foo bar')->match('/foo (.*)/');
// 'bar'
Метод matchAll
вернет коллекцию, содержащую части строки, которые соответствуют указанному шаблону регулярного выражения:
use Illuminate\Support\Str;
$result = Str::of('bar foo bar')->matchAll('/bar/');
// collect(['bar', 'bar'])
Если вы укажете группировку в выражении, то Laravel вернет коллекцию совпадений этой группы:
use Illuminate\Support\Str;
$result = Str::of('bar fun bar fly')->matchAll('/f(\w*)/');
// collect(['un', 'ly']);
Если совпадений не найдено, то будет возвращена пустая коллекция.
Метод newLine
добавляет к строке символ «конца строки»:
use Illuminate\Support\Str;
$padded = Str::of('Laravel')->newLine()->append('Framework');
// 'Laravel
// Framework'
Метод padBoth
оборачивает функцию str_pad
PHP, заполняя обе стороны строки другой строкой, пока конечная строка не достигнет желаемой длины:
use Illuminate\Support\Str;
$padded = Str::of('James')->padBoth(10, '_');
// '__James___'
$padded = Str::of('James')->padBoth(10);
// ' James '
Метод padLeft
оборачивает функцию str_pad
PHP, заполняя левую часть строки другой строкой, пока конечная строка не достигнет желаемой длины:
use Illuminate\Support\Str;
$padded = Str::of('James')->padLeft(10, '-=');
// '-=-=-James'
$padded = Str::of('James')->padLeft(10);
// ' James'
Метод padRight
оборачивает функцию str_pad
PHP, заполняя правую часть строки другой строкой, пока конечная строка не достигнет желаемой длины:
use Illuminate\Support\Str;
$padded = Str::of('James')->padRight(10, '-');
// 'James-----'
$padded = Str::of('James')->padRight(10);
// 'James '
Метод pipe
позволяет вам преобразовать строку, передав ее текущее значение указанной функции обратного вызова:
use Illuminate\Support\Str;
$hash = Str::of('Laravel')->pipe('md5')->prepend('Checksum: ');
// 'Checksum: a5c95b86291ea299fcbe64458ed12702'
$closure = Str::of('foo')->pipe(function ($str) {
return 'bar';
});
// 'bar'
Метод plural
преобразует слово в форму множественного числа. Этот метод поддерживает любой из языков, доступных построителю слов во множественном числе Laravel:
use Illuminate\Support\Str;
$plural = Str::of('car')->plural();
// cars
$plural = Str::of('child')->plural();
// children
Вы можете передать целое число в качестве второго аргумента метода для получения строки в единственном или множественном числе:
use Illuminate\Support\Str;
$plural = Str::of('child')->plural(2);
// children
$plural = Str::of('child')->plural(1);
// child
Метод prepend
добавляет указанные значения в начало строки:
use Illuminate\Support\Str;
$string = Str::of('Framework')->prepend('Laravel ');
// Laravel Framework
Метод remove
удаляет указанную подстроку или массив подстрок в строке:
use Illuminate\Support\Str;
$string = Str::of('Arkansas is quite beautiful!')->remove('quite');
// Arkansas is beautiful!
Вы можете передать false
в качестве второго аргумента для игнорирования регистра удаляемых подстрок.
Метод replace
заменяет указанную строку внутри строки:
use Illuminate\Support\Str;
$replaced = Str::of('Laravel 6.x')->replace('6.x', '7.x');
// Laravel 7.x
Метод replaceArray
последовательно заменяет указанное значение в строке, используя массив:
use Illuminate\Support\Str;
$string = 'The event will take place between ? and ?';
$replaced = Str::of($string)->replaceArray('?', ['8:30', '9:00']);
// The event will take place between 8:30 and 9:00
Метод replaceFirst
заменяет первое вхождение указанного значения в строке:
use Illuminate\Support\Str;
$replaced = Str::of('the quick brown fox jumps over the lazy dog')->replaceFirst('the', 'a');
// a quick brown fox jumps over the lazy dog
Метод replaceLast
заменяет последнее вхождение указанного значения в строке:
use Illuminate\Support\Str;
$replaced = Str::of('the quick brown fox jumps over the lazy dog')->replaceLast('the', 'a');
// the quick brown fox jumps over a lazy dog
Метод replaceMatches
заменяет все части строки, соответствующие указанному шаблону, переданной строки:
use Illuminate\Support\Str;
$replaced = Str::of('(+1) 501-555-1000')->replaceMatches('/[^A-Za-z0-9]++/', '')
// '15015551000'
Метод replaceMatches
также принимает замыкание, которое будет вызвано для каждой части строки, соответствующей шаблону, что позволяет вам выполнять логику замены в замыкании и возвращать замененное значение:
use Illuminate\Support\Str;
$replaced = Str::of('123')->replaceMatches('/\d/', function ($match) {
return '['.$match[0].']';
});
// '[1][2][3]'
Метод rtrim
удаляет символы из конца строки:
use Illuminate\Support\Str;
$string = Str::of(' Laravel ')->rtrim();
// ' Laravel'
$string = Str::of('/Laravel/')->rtrim('/');
// '/Laravel'
Метод scan
преобразует входные данные из строки в коллекцию в соответствии с форматом, поддерживаемым функцией sscanf
PHP:
use Illuminate\Support\Str;
$collection = Str::of('filename.jpg')->scan('%[^.].%s');
// collect(['filename', 'jpg'])
Метод singular
преобразует слово в форму единственного числа. Этот метод поддерживает любой из языков, доступных построителю слов во множественном числе Laravel:
use Illuminate\Support\Str;
$singular = Str::of('cars')->singular();
// car
$singular = Str::of('children')->singular();
// child
Метод slug
создает «дружественный фрагмент» URL-адреса из переданной строки:
use Illuminate\Support\Str;
$slug = Str::of('Laravel Framework')->slug('-');
// laravel-framework
Метод snake
преобразует переданную строку в snake_case
:
use Illuminate\Support\Str;
$converted = Str::of('fooBar')->snake();
// foo_bar
Метод split
разбивает строку на коллекцию с помощью регулярного выражения:
use Illuminate\Support\Str;
$segments = Str::of('one, two, three')->split('/[\s,]+/');
// collect(["one", "two", "three"])
Метод squish
удаляет все лишние пробелы из строки, включая лишние пробелы между словами:
use Illuminate\Support\Str;
$string = Str::of(' laravel framework ')->squish();
// laravel framework
Метод start
добавляет один экземпляр указанного значения в переданную строку, если она еще не начинается этим значением:
use Illuminate\Support\Str;
$adjusted = Str::of('this/string')->start('/');
// /this/string
$adjusted = Str::of('/this/string')->start('/');
// /this/string
Метод startsWith
определяет, начинается ли переданная строка с указанного значения:
use Illuminate\Support\Str;
$result = Str::of('This is my name')->startsWith('This');
// true
Метод studly
преобразует переданную строку в StudlyCase
:
use Illuminate\Support\Str;
$converted = Str::of('foo_bar')->studly();
// FooBar
Метод substr
возвращает часть строки, заданную параметрами «начало» и «длина»:
use Illuminate\Support\Str;
$string = Str::of('Laravel Framework')->substr(8);
// Framework
$string = Str::of('Laravel Framework')->substr(8, 5);
// Frame
Метод substrReplace
заменяет часть строки, начиная с позиции, указанной вторым аргументом, и заменяет число символов, указанное третьим аргументом. Передача 0
в третий аргумент метода вставит строку в указанную позицию без замены каких-либо существующих символов в строке:
use Illuminate\Support\Str;
$string = Str::of('1300')->substrReplace(':', 2);
// 13:
$string = Str::of('The Framework')->substrReplace(' Laravel', 3, 0);
// The Laravel Framework
Метод swap
заменяет несколько значений в переданной строке, используя функцию strtr
PHP:
use Illuminate\Support\Str;
$string = Str::of('Tacos are great!')
->swap([
'Tacos' => 'Burritos',
'great' => 'fantastic',
]);
// Burritos are fantastic!
Метод tap
передает строку заданному замыканию, позволяя вам взаимодействовать с ней, не затрагивая при этом саму строку. Исходная строка возвращается методом tap
независимо от того, что возвращает замыкание:
use Illuminate\Support\Str;
$string = Str::of('Laravel')
->append(' Framework')
->tap(function ($string) {
dump('String after append: '.$string);
})
->upper();
// LARAVEL FRAMEWORK
Метод test
определяет, соответствует ли строка переданному шаблону регулярного выражения:
use Illuminate\Support\Str;
$result = Str::of('Laravel Framework')->test('/Laravel/');
// true
Метод title
преобразует переданную строку в Title Case
:
use Illuminate\Support\Str;
$converted = Str::of('a nice title uses the correct case')->title();
// A Nice Title Uses The Correct Case
Метод trim
обрезает переданную строку:
use Illuminate\Support\Str;
$string = Str::of(' Laravel ')->trim();
// 'Laravel'
$string = Str::of('/Laravel/')->trim('/');
// 'Laravel'
Метод ucfirst
возвращает переданную строку с первой заглавной буквой:
use Illuminate\Support\Str;
$string = Str::of('foo bar')->ucfirst();
// Foo bar
Метод ucsplit
разбивает переданную строку на коллекцию по символам верхнего регистра:
use Illuminate\Support\Str;
$string = Str::of('Foo Bar')->ucsplit();
// collect(['Foo', 'Bar'])
Метод upper
преобразует переданную строку в верхний регистр:
use Illuminate\Support\Str;
$adjusted = Str::of('laravel')->upper();
// LARAVEL
Метод when
вызывает указанное замыкание, если переданное условие истинно. Замыкание получит экземпляр Fluent:
use Illuminate\Support\Str;
$string = Str::of('Taylor')
->when(true, function ($string) {
return $string->append(' Otwell');
});
// 'Taylor Otwell'
При необходимости вы можете передать другое замыкание в качестве третьего параметра методу when
. Это замыкание будет выполнено, если параметр условия оценивается как false
.
Метод whenContains
вызывает указанное замыкание, если строка содержит переданное значение. Замыкание получит экземпляр Fluent:
use Illuminate\Support\Str;
$string = Str::of('tony stark')
->whenContains('tony', function ($string) {
return $string->title();
});
// 'Tony Stark'
При необходимости вы можете передать другое замыкание в качестве третьего параметра метода whenContains
. Это замыкание будет выполнено, если строка не содержит переданного значения.
Вы также можете передать массив значений, чтобы определить, содержит ли переданная строка какие-либо значения в массиве:
use Illuminate\Support\Str;
$string = Str::of('tony stark')
->whenContains(['tony', 'hulk'], function ($string) {
return $string->title();
});
// Tony Stark
Метод whenContainsAll
вызывает указанное замыкание, если строка содержит все переданные подстроки. Замыкание получит экземпляр Fluent:
use Illuminate\Support\Str;
$string = Str::of('tony stark')
->whenContainsAll(['tony', 'stark'], function ($string) {
return $string->title();
});
// 'Tony Stark'
При необходимости вы можете передать другое замыкание в качестве третьего параметра методу whenContainsAll
. Это замыкание будет выполнено, если параметр условия оценивается как false
.
Метод whenEmpty
вызывает переданное замыкание, если строка пуста. Если замыкание возвращает значение, то это значение будет возвращено методом whenEmpty
. Если замыкание не возвращает значение, будет возвращен экземпляр Fluent:
use Illuminate\Support\Str;
$string = Str::of(' ')->whenEmpty(function ($string) {
return $string->trim()->prepend('Laravel');
});
// 'Laravel'
Метод whenNotEmpty
вызывает переданное замыкание, если строка не пуста. Если замыкание возвращает значение, то это значение также будет возвращено методом whenNotEmpty
. Если замыкание не возвращает значение, будет возвращен Fluent:
use Illuminate\Support\Str;
$string = Str::of('Framework')->whenNotEmpty(function ($string) {
return $string->prepend('Laravel ');
});
// 'Laravel Framework'
Метод whenStartsWith
вызывает переданное замыкание, если строка начинается с заданной подстроки. Замыкание получит экземпляр Fluent:
use Illuminate\Support\Str;
$string = Str::of('disney world')->whenStartsWith('disney', function ($string) {
return $string->title();
});
// 'Disney World'
Метод whenEndsWith
вызывает переданное замыкание, если строка заканчивается заданной подстрокой. Замыкание получит экземпляр Fluent:
use Illuminate\Support\Str;
$string = Str::of('disney world')->whenEndsWith('world', function ($string) {
return $string->title();
});
// 'Disney World'
Метод whenExactly
вызывает переданное замыкание, если строка точно соответствует заданной строке. Замыкание получит экземпляр Fluent:
use Illuminate\Support\Str;
$string = Str::of('laravel')->whenExactly('laravel', function ($string) {
return $string->title();
});
// 'Laravel'
Метод whenNotExactly
вызывает переданное замыкание, если строка имеет не точное соответствие указанной строке. Замыкание получит экземпляр Fluent:
use Illuminate\Support\Str;
$string = Str::of('framework')->whenNotExactly('laravel', function ($string) {
return $string->title();
});
// 'Framework'
Метод whenIs
вызывает переданное замыкание, если строка соответствует заданному шаблону. Допускается использование метасимвола подстановки *
. Замыкание получит экземпляр Fluent:
use Illuminate\Support\Str;
$string = Str::of('foo/bar')->whenIs('foo/*', function ($string) {
return $string->append('/baz');
});
// 'foo/bar/baz'
Метод whenIsAscii
вызывает переданное замыкание, если строка представляет собой 7-битный ASCII. Замыкание получит экземпляр Fluent:
use Illuminate\Support\Str;
$string = Str::of('laravel')->whenIsAscii(function ($string) {
return $string->title();
});
// 'Laravel'
Метод whenIsUlid
вызывает переданное замыкание, если строка является допустимым ULID. Замыкание получит экземпляр Fluent:
use Illuminate\Support\Str;
$string = Str::of('01gd6r360bp37zj17nxb55yv40')->whenIsUlid(function ($string) {
return $string->substr(0, 8);
});
// '01gd6r36'
Метод whenIsUuid
вызывает переданное замыкание, если строка является допустимым UUID. Замыкание получит экземпляр Fluent:
use Illuminate\Support\Str;
$string = Str::of('a0a2a2d2-0b87-4a18-83f2-2529882be2de')->whenIsUuid(function ($string) {
return $string->substr(0, 8);
});
// 'a0a2a2d2'
Метод whenTest
вызывает переданное замыкание, если строка соответствует заданному регулярному выражению. Замыкание получит экземпляр Fluent:
use Illuminate\Support\Str;
$string = Str::of('laravel framework')->whenTest('/laravel/', function ($string) {
return $string->title();
});
// 'Laravel Framework'
Метод wordCount
возвращает количество слов, содержащихся в строке:
use Illuminate\Support\Str;
Str::of('Hello, world!')->wordCount(); // 2
Метод words
ограничивает количество слов в строке. Дополнительная строка может быть передана этому методу, чтобы указать, какая строка должна быть добавлена в конец усеченной строки:
use Illuminate\Support\Str;
$string = Str::of('Perfectly balanced, as all things should be.')->words(3, ' >>>');
// Perfectly balanced, as >>>
Функция action
генерирует URL-адрес для переданного действия контроллера:
use App\Http\Controllers\HomeController;
$url = action([HomeController::class, 'index']);
Если метод принимает параметры маршрута, вы можете передать их как второй аргумент методу:
$url = action([UserController::class, 'profile'], ['id' => 1]);
Функция asset
генерирует URL для веб-актива, используя текущую схему запроса (HTTP или HTTPS):
$url = asset('img/photo.jpg');
Вы можете изменить хост URL веб-актива, указав значение переменной ASSET_URL
в вашем файле .env
. Это может быть полезно, если вы размещаете свои веб-активы на стороннем сервисе, таком как Amazon S3 или другой CDN:
// ASSET_URL=http://example.com/assets
$url = asset('img/photo.jpg'); // http://example.com/assets/img/photo.jpg
Функция route
генерирует URL для переданного именованного маршрута:
$url = route('route.name');
Если маршрут принимает параметры, вы можете передать их в качестве второго аргумента методу:
$url = route('route.name', ['id' => 1]);
По умолчанию функция route
генерирует абсолютный URL. Если вы хотите создать относительный URL, вы можете передать false
в качестве третьего аргумента:
$url = route('route.name', ['id' => 1], false);
Функция secure_asset
генерирует URL для веб-актива, используя HTTPS:
$url = secure_asset('img/photo.jpg');
Функция secure_url
генерирует полный URL-адрес для указанного пути, используя HTTPS. Дополнительные сегменты URL могут быть переданы во втором аргументе функции:
$url = secure_url('user/profile');
$url = secure_url('user/profile', [1]);
Функция to_route
генерирует HTTP-ответ перенаправления на именованный маршрут:
return to_route('users.show', ['user' => 1]);
При необходимости вы можете передать код состояния HTTP, который должен быть назначен перенаправлению, и любые дополнительные заголовки ответа в качестве третьего и четвертого аргументов метода to_route
, соответственно:
return to_route('users.show', ['user' => 1], 302, ['X-Framework' => 'Laravel']);
Функция url
генерирует полный URL-адрес для указанного пути:
$url = url('user/profile');
$url = url('user/profile', [1]);
Если путь не указан, будет возвращен экземпляр Illuminate\Routing\UrlGenerator
:
$current = url()->current();
$full = url()->full();
$previous = url()->previous();
Функция abort
генерирует HTTP-исключение, которое будет обработано обработчиком исключения:
abort(403);
Вы также можете указать текст ответа исключения и пользовательские заголовки ответа, которые должны быть отправлены в браузер:
abort(403, 'Unauthorized.', $headers);
Функция abort_if
генерирует исключение HTTP, если переданное логическое выражение имеет значение true
:
abort_if(! Auth::user()->isAdmin(), 403);
Подобно методу abort
, вы также можете указать текст ответа исключения третьим аргументом и массив пользовательских заголовков ответа в качестве четвертого аргумента.
Функция abort_unless
генерирует исключение HTTP, если переданное логическое выражение оценивается как false
:
abort_unless(Auth::user()->isAdmin(), 403);
Подобно методу abort
, вы также можете указать текст ответа исключения третьим аргументом и массив пользовательских заголовков ответа в качестве четвертого аргумента.
Функция app
возвращает экземпляр контейнера служб:
$container = app();
Вы можете передать имя класса или интерфейса для извлечения его из контейнера:
$api = app('HelpSpot\API');
Функция auth
возвращает экземпляр аутентификатора. Вы можете использовать его вместо фасада Auth
для удобства:
$user = auth()->user();
При необходимости вы можете указать, к какому экземпляру охранника вы хотите получить доступ:
$user = auth('admin')->user();
Функция back
генерирует HTTP-ответ перенаправления в предыдущее расположение пользователя:
return back($status = 302, $headers = [], $fallback = '/');
return back();
Функция bcrypt
хеширует переданное значение, используя Bcrypt. Вы можете использовать его как альтернативу фасаду Hash
:
$password = bcrypt('my-secret-password');
Функция blank
проверяет, является ли переданное значение «пустым»:
blank('');
blank(' ');
blank(null);
blank(collect());
// true
blank(0);
blank(true);
blank(false);
// false
Обратной функции blank
является функция filled
.
Функция broadcast
транслирует переданное событие своим слушателям:
broadcast(new UserRegistered($user));
broadcast(new UserRegistered($user))->toOthers();
Функция cache
используется для получения значений из кеша. Если переданный ключ не существует в кеше, будет возвращено необязательное значение по умолчанию:
$value = cache('key');
$value = cache('key', 'default');
Вы можете добавлять элементы в кеш, передавая массив пар ключ / значение в функцию. Вы также должны передать количество секунд или продолжительность актуальности кешированного значения:
cache(['key' => 'value'], 300);
cache(['key' => 'value'], now()->addSeconds(10));
Функция class_uses_recursive
возвращает все трейты, используемые классом, включая трейты, используемые всеми его родительскими классами:
$traits = class_uses_recursive(App\Models\User::class);
Функция collect
создает экземпляр коллекции переданного значения:
$collection = collect(['taylor', 'abigail']);
Функция config
получает значение переменной конфигурации. Доступ к значениям конфигурации можно получить с помощью «точечной нотации», которое включает имя файла и параметр, к которому вы хотите получить доступ. Значение по умолчанию может быть указано и возвращается, если опция конфигурации не существует:
$value = config('app.timezone');
$value = config('app.timezone', $default);
Вы можете установить переменные конфигурации на время выполнения скрипта, передав массив пар ключ / значение. Однако обратите внимание, что эта функция влияет только на значение конфигурации для текущего запроса и не обновляет фактические значения конфигурации:
config(['app.debug' => true]);
Функция cookie
создает новый экземпляр Cookie:
$cookie = cookie('name', 'value', $minutes);
Функция csrf_field
генерирует HTML «скрытого» поля ввода, содержащее значение токена CSRF. Например, используя синтаксис Blade:
{{ csrf_field() }}
Функция csrf_token
возвращает значение текущего токена CSRF:
$token = csrf_token();
Функция decrypt
расшифрует переданное значение. Вы можете использовать эту функцию как альтернативу фасаду Crypt
:
$password = decrypt($value);
Функция dd
выводит переданные переменные и завершает выполнение скрипта:
dd($value);
dd($value1, $value2, $value3, ...);
Если вы не хотите останавливать выполнение вашего скрипта, используйте вместо этого функцию dump
.
Функция dispatch
помещает переданное задание в очередь заданий Laravel:
dispatch(new App\Jobs\SendEmails);
Функция dump
выводит переданные переменные:
dump($value);
dump($value1, $value2, $value3, ...);
Если вы хотите прекратить выполнение скрипта после вывода переменных, используйте вместо этого функцию dd
.
Функция encrypt
зашифрует переданное значение. Вы можете использовать эту функцию как альтернативу фасаду Crypt
:
$secret = encrypt('my-secret-value');
Функция env
возвращает значение переменной окружения или значение по умолчанию:
$env = env('APP_ENV');
$env = env('APP_ENV', 'production');
Предупреждение
Если вы выполнили командуconfig:cache
во время процесса развертывания, вы должны быть уверены, что вызываете функциюenv
только из файлов конфигурации. Как только конфигурации будут кешированы, файл.env
не будет загружаться, и все вызовы функцииenv
будут возвращатьnull
.
Функция event
отправляет переданное событие своим слушателям:
event(new UserRegistered($user));
Функция 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
будет использовать параметр конфигурации faker_locale
вашего конфигурационного файла config/app.php
; вы также можете указать языковой стандарт, передав его функции fake
. Каждому языковому стандарту соответствует свой синглтон:
fake('nl_NL')->name()
Функция filled
проверяет, является ли переданное значение не «пустым»:
filled(0);
filled(true);
filled(false);
// true
filled('');
filled(' ');
filled(null);
filled(collect());
// false
Обратной функции filled
является функция blank
.
Функция info
запишет информацию в журнал:
info('Some helpful information!');
Также функции может быть передан массив контекстных данных:
info('User login attempt failed.', ['id' => $user->id]);
Функцию logger
можно использовать для записи сообщения уровня debug
в журнал:
logger('Debug message');
Также функции может быть передан массив контекстных данных:
logger('User has logged in.', ['id' => $user->id]);
Если функции не передано значение, то будет возвращен экземпляр регистратора:
logger()->error('You are not allowed here.');
Функция method_field
генерирует HTML «скрытого» поле ввода, содержащее поддельное значение HTTP-метода формы. Например, используя синтаксис Blade:
<form method="POST">
{{ method_field('DELETE') }}
</form>
Функция now
создает новый экземпляр Illuminate\Support\Carbon
для текущего времени:
$now = now();
Функция old
возвращает значение прежнего ввода, краткосрочно сохраненное в сессии:
$value = old('value');
$value = old('value', 'default');
Поскольку «значение по умолчанию», предоставляемое в качестве второго аргумента функции old
, часто является атрибутом модели Eloquent, то Laravel позволяет вам просто передать всю модель Eloquent в качестве второго аргумента функции old
. При этом Laravel будет предполагать, что первый аргумент, предоставленный функции old
, является именем атрибута Eloquent, который следует считать «значением по умолчанию»:
{{ old('name', $user->name) }}
// Эквивалентно ...
{{ old('name', $user) }}
Функция optional
принимает любой аргумент и позволяет вам получать доступ к свойствам или вызывать методы этого объекта. Если переданный объект имеет значение null
, свойства и методы будут возвращать также null
вместо вызова ошибки:
return optional($user->address)->street;
{!! old('name', optional($user)->name) !!}
Функция optional
также принимает замыкание в качестве второго аргумента. Замыкание будет вызвано, если значение, указанное в качестве первого аргумента, не равно null
:
return optional(User::find($id), function ($user) {
return $user->name;
});
Функция policy
извлекает экземпляр политики для переданного класса:
$policy = policy(App\Models\User::class);
Функция redirect
возвращает HTTP-ответ перенаправления или возвращает экземпляр перенаправителя, если вызывается без аргументов:
return redirect($to = null, $status = 302, $headers = [], $https = null);
return redirect('/home');
return redirect()->route('route.name');
Функция report
сообщит об исключении, используя ваш обработчик исключений:
report($e);
Функция report
также принимает строку в качестве аргумента. Когда в функцию передается строка, она создает исключение с переданной строкой в качестве сообщения:
report('Something went wrong.');
Функция report_if
сообщит об исключении, используя ваш обработчик исключений, если переданное условие истинно:
report_if($shouldReport, $e);
report_if($shouldReport, 'Something went wrong.');
Функция report_unless
сообщит об исключении, используя ваш обработчик исключений, если переданное условие не является истинным:
report_unless($reportingDisabled, $e);
report_unless($reportingDisabled, 'Something went wrong.');
Функция request
возвращает экземпляр текущего запроса или получает значение поля ввода из текущего запроса:
$request = request();
$value = request('key', $default);
Функция rescue
выполняет переданное замыкание и перехватывает любые исключения, возникающие во время его выполнения. Все перехваченные исключения будут отправлены вашему обработчику исключений; однако, обработка запроса будет продолжена:
return rescue(function () {
return $this->method();
});
Вы также можете передать второй аргумент функции rescue
. Этот аргумент будет значением «по умолчанию», которое должно быть возвращено, если во время выполнения замыкание возникнет исключение:
return rescue(function () {
return $this->method();
}, false);
return rescue(function () {
return $this->method();
}, function () {
return $this->failure();
});
Функция resolve
извлекает экземпляр связанного с переданным классом или интерфейсом, используя контейнер служб:
$api = resolve('HelpSpot\API');
Функция response
создает экземпляр ответа или получает экземпляр фабрики ответов:
return response('Hello World', 200, $headers);
return response()->json(['foo' => 'bar'], 200, $headers);
Функция retry
пытается выполнить переданное замыкание, пока не будет достигнут указанный лимит попыток. Если замыкание не выбросит исключение, то будет возвращено его значение. Если замыкание выбросит исключение, то замыкание будет автоматически повторено. Если максимальное количество попыток превышено, будет выброшено исключение:
return retry(5, function () {
// Попытаться выполнить 5 раз с перерывом 100 мс между попытками ...
}, 100);
Если вы хотите указать количество миллисекунд между попытками, то вы можете передать замыкание в качестве третьего аргумента функции retry
:
return retry(5, function () {
// ...
}, function ($attempt, $exception) {
return $attempt * 100;
});
Для удобства вы можете предоставить массив в качестве первого аргумента функции retry
. Этот массив будет использоваться для определения количества миллисекунд ожидания между последующими попытками:
return retry([100, 200], function () {
// Ждем 100 мс при первой попытке, 200 мс при второй попытке ...
});
Для задания определенных условий выполнения попытки, вы можете передать замыкание в качестве четвертого аргумента функции retry
:
return retry(5, function () {
// ...
}, 100, function ($exception) {
return $exception instanceof RetryException;
});
Функция session
используется для получения или задания значений сессии:
$value = session('key');
Вы можете установить значения, передав массив пар ключ / значение в функцию:
session(['chairs' => 7, 'instruments' => 3]);
Если в функцию не передано значение, то будет возвращен экземпляр хранилища сессий:
$value = session()->get('key');
session()->put('key', $value);
Функция tap
принимает два аргумента: произвольное значение и замыкание. Значение будет передано в замыкание, а затем возвращено функцией tap
. Возвращаемое значение замыкания не имеет значения:
$user = tap(User::first(), function ($user) {
$user->name = 'taylor';
$user->save();
});
Если замыкание не передано функции tap
, то вы можете вызвать любой метод с указанным значением. Возвращаемое значение вызываемого метода всегда будет изначально указанное, независимо от того, что метод фактически возвращает в своем определении. Например, метод Eloquent update
обычно возвращает целочисленное значение. Однако, мы можем заставить метод возвращать саму модель, увязав вызов метода update
с помощью функции tap
:
$user = tap($user)->update([
'name' => $name,
'email' => $email,
]);
Чтобы добавить к своему классу метод tap
, используйте трейт Illuminate\Support\Traits\Tappable
в вашем классе. Метод tap
этого трейта принимает замыкание в качестве единственного аргумента. Сам экземпляр объекта будет передан замыканию, а затем будет возвращен методом tap
:
return $user->tap(function ($user) {
//
});
Функция 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
выбрасывает переданное исключение, если указанное логическое выражение оценивается как false
:
throw_unless(Auth::user()->isAdmin(), AuthorizationException::class);
throw_unless(
Auth::user()->isAdmin(),
AuthorizationException::class,
'You are not allowed to access this page.'
);
Функция today
создает новый экземпляр Illuminate\Support\Carbon
для текущей даты:
$today = today();
Функция trait_uses_recursive
возвращает все трейты, используемые трейтом:
$traits = trait_uses_recursive(\Illuminate\Notifications\Notifiable::class);
Функция transform
выполняет замыкание для переданного значения, если значение не пустое, и возвращает результат замыкания:
$callback = function ($value) {
return $value * 2;
};
$result = transform(5, $callback);
// 10
В качестве третьего параметра могут быть указанны значение по умолчанию или замыкание. Это значение будет возвращено, если переданное значение пустое:
$result = transform(null, $callback, 'The value is blank');
// The value is blank
Функция validator
создает новый экземпляр валидатора с указанными аргументами. Вы можете использовать его для удобства вместо фасада Validator
:
$validator = validator($data, $rules, $messages);
Функция value
возвращает переданное значение. Однако, если вы передадите замыкание в функцию, то замыкание будет выполнено, и будет возвращен его результат:
$result = value(true);
// true
$result = value(function () {
return false;
});
// false
Функция view
возвращает экземпляр представления:
return view('auth.login');
Функция with
возвращает переданное значение. Если вы передадите замыкание в функцию в качестве второго аргумента, то замыкание будет выполнено и будет возвращен результат его выполнения:
$callback = function ($value) {
return is_numeric($value) ? $value * 2 : 0;
};
$result = with(5, $callback);
// 10
$result = with(null, $callback);
// 0
$result = with(5, null);
// 5
Иногда требуется быстро протестировать производительность определенных частей вашего приложения. В таких случаях вы можете использовать класс 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
]);
По умолчанию переданные замыкания будут выполняться один раз (одна итерация), а их продолжительность будет отображаться в браузере или консоли.
Чтобы вызвать замыкание более одного раза, вы можете указать количество итераций в качестве второго аргумента метода. При выполнении замыкания более одного раза класс Benchmark
вернет среднее количество миллисекунд, которое потребовалось для выполнения замыкания во всех итерациях:
Benchmark::dd(fn () => User::count(), iterations: 10); // 0.5 ms
Класс Laravel Lottery может использоваться для выполнения замыканий, основываясь на выборе целого числа из переданных в замкнутом интервале. Это может быть особенно полезно, когда вы хотите выполнять код только для процента ваших входящих запросов:
use Illuminate\Support\Lottery;
Lottery::odds(1, 20)
->winner(fn () => $user->won())
->loser(fn () => $user->lost())
->choose();
Вы можете комбинировать класс Laravel Lottery с другими функциями. Например, вы можете сообщить обработчику исключений только о небольшом проценте медленных запросов. И, поскольку класс Lottery является вызываемым, мы можем передать экземпляр класса в любой метод, который принимает вызываемые объекты:
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 вашего приложения:
// Всегда выигрышная ситуация ...
Lottery::alwaysWin();
// Всегда проигрышная ситуация ...
Lottery::alwaysLose();
// Сначала выигрышная ситуация, затем проигрышная и далее обычное поведение ...
Lottery::fix([true, false]);
// Возврат к обычному поведению ...
Lottery::determineResultNormally();