git ff7f2bf9e463e6f4027d6c6218107f319effead9
Laravel содержит множество глобальных «вспомогательных» функций. Многие из этих функций используются самим фреймворком; однако, вы можете использовать их в своих собственных приложениях, если сочтете удобными.
- 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::last
- Arr::only
- Arr::pluck
- Arr::prepend
- 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::camel
- Str::contains
- Str::containsAll
- Str::endsWith
- Str::finish
- Str::headline
- Str::is
- Str::isAscii
- Str::isUuid
- Str::kebab
- 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::start
- Str::startsWith
- Str::studly
- Str::substr
- Str::substrCount
- Str::substrReplace
- Str::title
- Str::toHtmlString
- Str::ucfirst
- Str::upper
- Str::uuid
- Str::wordCount
- Str::words
- trans
- trans_choice
Строки Fluent обеспечивают более гибкий объектно-ориентированный интерфейс для работы со строковыми значениями, позволяя объединять несколько строковых операций вместе с использованием более удобочитаемого синтаксиса по сравнению с традиционными строковыми операциями.
- after
- afterLast
- append
- ascii
- basename
- before
- beforeLast
- between
- camel
- contains
- containsAll
- dirname
- endsWith
- exactly
- explode
- finish
- is
- isAscii
- isEmpty
- isNotEmpty
- isUuid
- kebab
- length
- limit
- lower
- ltrim
- markdown
- mask
- match
- matchAll
- padBoth
- padLeft
- padRight
- pipe
- plural
- prepend
- remove
- replace
- replaceArray
- replaceFirst
- replaceLast
- replaceMatches
- rtrim
- scan
- singular
- slug
- snake
- split
- start
- startsWith
- studly
- substr
- substrReplace
- tap
- test
- title
- trim
- ucfirst
- upper
- when
- whenContains
- whenContainsAll
- whenEmpty
- whenNotEmpty
- whenStartsWith
- whenEndsWith
- whenExactly
- whenIs
- whenIsAscii
- 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
- dd
- dispatch
- dump
- env
- event
- filled
- info
- logger
- method_field
- now
- old
- optional
- policy
- redirect
- report
- 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::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::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::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'
*/
При помощи этого метода осуществляется объединение css-классов в Blade, а также в директиве @class
.
Метод 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');
Функция 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::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::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::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::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::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:
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
преобразует слово в форму множественного числа. В настоящее время этот метод поддерживает только английский язык:
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
в форму множественного числа. В настоящее время этот метод поддерживает только английский язык:
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
преобразует слово в форму единственного числа. В настоящее время этот метод поддерживает только английский язык:
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::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
Метод 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::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::upper
преобразует переданную строку в верхний регистр:
use Illuminate\Support\Str;
$string = Str::upper('laravel');
// LARAVEL
Метод 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 >>>
Функция 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 '
Метод camel
преобразует переданную строку в camelCase
:
use Illuminate\Support\Str;
$converted = Str::of('foo_bar')->camel();
// fooBar
Метод 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'
Метод 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/
Метод 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
Метод 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
Метод 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']);
If no matches are found, an empty collection will be returned.
Метод 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
преобразует слово в форму множественного числа. В настоящее время этот метод поддерживает только английский язык:
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
преобразует слово в форму единственного числа. В настоящее время этот метод поддерживает только английский язык:
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"])
Метод 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
Метод 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
Метод 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
вызывает данное замыкание, если строка содержит заданное значение. Замыкание получит экземпляр класса Stringable
в качестве аргумента:
use Illuminate\Support\Str;
$string = Str::of('tony stark')
->whenContains('tony', function ($string) {
return $string->title();
});
// 'Tony Stark'
При необходимости вы можете передать другое замыкание в качестве третьего параметра метода when
. Это замыкание будет выполнено, если строка не содержит заданного значения.
Вы также можете передать массив значений, чтобы определить, содержит ли данная строка какие-либо значения в массиве:
use Illuminate\Support\Str;
$string = Str::of('tony stark')
->whenContains(['tony', 'hulk'], function ($string) {
return $string->title();
});
// Tony Stark
Метод whenContainsAll
вызывает данное замыкание, если строка содержит все заданные подстроки. Замыкание получит экземпляр класса Stringable
в качестве аргумента:
use Illuminate\Support\Str;
$string = Str::of('tony stark')
->whenContainsAll(['tony', 'stark'], function ($string) {
return $string->title();
});
// 'Tony Stark'
При необходимости вы можете передать другое замыкание в качестве третьего параметра метода when
. Это замыкание будет выполнено, если параметр условия оценивается как false
.
Метод whenEmpty
вызывает переданное замыкание, если строка пуста. Если замыкание возвращает значение, то это значение будет возвращено методом whenEmpty
. Если замыкание не возвращает значение, будет возвращен экземпляр Fluent:
use Illuminate\Support\Str;
$string = Str::of(' ')->whenEmpty(function ($string) {
return $string->trim()->prepend('Laravel');
});
// 'Laravel'
Метод whenNotEmpty
вызывает данное замыкание, если строка не пуста. Если замыкание возвращает значение, это значение также будет возвращено методом whenNotEmpty
. Если замыкание не возвращает значение, будет возвращен экземпляр класса Stringable
:
use Illuminate\Support\Str;
$string = Str::of('Framework')->whenNotEmpty(function ($string) {
return $string->prepend('Laravel ');
});
// 'Laravel Framework'
Метод whenStartsWith
вызывает данное замыкание, если строка начинается с данной подстроки. Замыкание получит свободный экземпляр класса Stringable
в качестве аргумента:
use Illuminate\Support\Str;
$string = Str::of('disney world')->whenStartsWith('disney', function ($string) {
return $string->title();
});
// 'Disney World'
Метод whenEndsWith
вызывает данное замыкание, если строка заканчивается заданной подстрокой. Замыкание получит свободный экземпляр строки:
use Illuminate\Support\Str;
$string = Str::of('disney world')->whenEndsWith('world', function ($string) {
return $string->title();
});
// 'Disney World'
Метод whenExactly
вызывает данное замыкание, если строка точно соответствует заданной строке. Закрытие получит свободный экземпляр строки:
use Illuminate\Support\Str;
$string = Str::of('laravel')->whenExactly('laravel', function ($string) {
return $string->title();
});
// 'Laravel'
Метод whenIs
вызывает данное замыкание, если строка соответствует заданному шаблону. Звездочки могут использоваться в качестве подстановочных знаков. Замыкание получит экземпляр класса Stringable
в качестве аргумента:
use Illuminate\Support\Str;
$string = Str::of('foo/bar')->whenIs('foo/*', function ($string) {
return $string->append('/baz');
});
// 'foo/bar/baz'
Метод whenIsAscii
вызывает данное замыкание, если строка представляет собой 7-битный ASCII. Замыкание получит экземпляр класса Stringable
в качестве аргумента:
use Illuminate\Support\Str;
$string = Str::of('foo/bar')->whenIsAscii('laravel', function ($string) {
return $string->title();
});
// 'Laravel'
Метод whenIsUuid
вызывает данное замыкание, если строка является допустимым UUID. Замыкание получит экземпляр класса Stringable
в качестве аргумента:
use Illuminate\Support\Str;
$string = Str::of('foo/bar')->whenIsUuid('a0a2a2d2-0b87-4a18-83f2-2529882be2de', function ($string) {
return $string->substr(0, 8);
});
// 'a0a2a2d2'
Метод whenTest
вызывает данное замыкание, если строка соответствует заданному регулярному выражению. Замыкание получит экземпляр класса Stringable
в качестве аргумента:
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 для исходника (прим. перев.: директория resources
), используя текущую схему запроса (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]);
Функция 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();
Функция dd
выводит переданные переменные и завершает выполнение скрипта:
dd($value);
dd($value1, $value2, $value3, ...);
Если вы не хотите останавливать выполнение вашего скрипта, используйте вместо этого функцию dump
.
Функция dispatch
помещает переданное задание в очередь заданий Laravel:
dispatch(new App\Jobs\SendEmails);
Функция dump
выводит переданные переменные:
dump($value);
dump($value1, $value2, $value3, ...);
Если вы хотите прекратить выполнение скрипта после вывода переменных, используйте вместо этого функцию dd
.
Функция env
возвращает значение переменной окружения или значение по умолчанию:
$env = env('APP_ENV');
$env = env('APP_ENV', 'production');
{note} Если вы выполнили команду
config:cache
во время процесса развертывания, вы должны быть уверены, что вызываете функциюenv
только из файлов конфигурации. Как только конфигурации будут кешированы, файл.env
не будет загружаться, и все вызовы функцииenv
будут возвращатьnull
.
Функция event
отправляет переданное событие своим слушателям:
event(new UserRegistered($user));
Функция 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');
Функция 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.');
Функция 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 () {
// Attempt 5 times while resting 100ms in between attempts...
}, 100);
Если вы хотите вручную вычислить количество миллисекунд, которое должно пройти между попытками, вы можете передать функцию в качестве третьего аргумента функции retry
:
return retry(5, function () {
// ...
}, function ($attempt) {
return $attempt * 100;
});
Чтобы повторить попытку только при определенных условиях, вы можете передать функцию, определяющее это условие, в качестве четвертого аргумента функции 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