Подписывайтесь на наш Telegram канал и будьте в курсе всех событий.
Будьте в курсе последних новостей!
Будьте в курсе последних новостей!

Глобальные помощники (helpers)

Вы просматриваете документ для прошлой версии.
Рассмотрите возможность обновления вашего проекта до актуальной версии 10.x. Почему это важно?

Введение

Laravel содержит множество глобальных «вспомогательных» функций. Многие из этих функций используются самим фреймворком; однако, вы можете использовать их в своих собственных приложениях, если сочтете удобными.

Доступные методы

Массивы и объекты

Пути

Строки

Строки Fluent

Строки Fluent обеспечивают более гибкий объектно-ориентированный интерфейс для работы со строковыми значениями, позволяя объединять несколько строковых операций вместе с использованием более удобочитаемого синтаксиса по сравнению с традиционными строковыми операциями.

URL-адреса

Разное

Список методов

Массивы и объекты

Arr::accessible()

Метод Arr::accessible определяет, доступно ли переданное значение массиву:

use Illuminate\Support\Arr;
use Illuminate\Support\Collection;

$isAccessible = Arr::accessible(['a' => 1, 'b' => 2]);

// true

$isAccessible = Arr::accessible(new Collection);

// true

$isAccessible = Arr::accessible('abc');

// false

$isAccessible = Arr::accessible(new stdClass);

// false

Arr::add()

Метод Arr::add добавляет переданную пару ключ / значение в массив, если указанный ключ еще не существует в массиве или установлен как null:

use Illuminate\Support\Arr;

$array = Arr::add(['name' => 'Desk'], 'price', 100);

// ['name' => 'Desk', 'price' => 100]

$array = Arr::add(['name' => 'Desk', 'price' => null], 'price', 100);

// ['name' => 'Desk', 'price' => 100]

Arr::collapse()

Метод Arr::collapse сворачивает массив массивов в один массив:

use Illuminate\Support\Arr;

$array = Arr::collapse([[1, 2, 3], [4, 5, 6], [7, 8, 9]]);

// [1, 2, 3, 4, 5, 6, 7, 8, 9]

Arr::crossJoin()

Метод Arr::crossJoin перекрестно соединяет указанные массивы, возвращая декартово произведение со всеми возможными перестановками:

use Illuminate\Support\Arr;

$matrix = Arr::crossJoin([1, 2], ['a', 'b']);

/*
    [
        [1, 'a'],
        [1, 'b'],
        [2, 'a'],
        [2, 'b'],
    ]
*/

$matrix = Arr::crossJoin([1, 2], ['a', 'b'], ['I', 'II']);

/*
    [
        [1, 'a', 'I'],
        [1, 'a', 'II'],
        [1, 'b', 'I'],
        [1, 'b', 'II'],
        [2, 'a', 'I'],
        [2, 'a', 'II'],
        [2, 'b', 'I'],
        [2, 'b', 'II'],
    ]
*/

Arr::divide()

Метод Arr::divide возвращает два массива: один содержит ключи, а другой – значения переданного массива:

use Illuminate\Support\Arr;

[$keys, $values] = Arr::divide(['name' => 'Desk']);

// $keys: ['name']

// $values: ['Desk']

Arr::dot()

Метод Arr::dot объединяет многомерный массив в одноуровневый, использующий «точечную нотацию» для обозначения глубины:

use Illuminate\Support\Arr;

$array = ['products' => ['desk' => ['price' => 100]]];

$flattened = Arr::dot($array);

// ['products.desk.price' => 100]

Arr::except()

Метод Arr::except удаляет переданные пары ключ / значение из массива:

use Illuminate\Support\Arr;

$array = ['name' => 'Desk', 'price' => 100];

$filtered = Arr::except($array, ['price']);

// ['name' => 'Desk']

Arr::exists()

Метод Arr::exists проверяет, существует ли переданный ключ в указанном массиве:

use Illuminate\Support\Arr;

$array = ['name' => 'John Doe', 'age' => 17];

$exists = Arr::exists($array, 'name');

// true

$exists = Arr::exists($array, 'salary');

// false

Arr::first()

Метод Arr::first возвращает первый элемент массива, прошедший тест переданного замыкания на истинность:

use Illuminate\Support\Arr;

$array = [100, 200, 300];

$first = Arr::first($array, function ($value, $key) {
    return $value >= 150;
});

// 200

Значение по умолчанию может быть передано в качестве третьего аргумента методу. Это значение будет возвращено, если ни одно из значений не пройдет проверку на истинность:

use Illuminate\Support\Arr;

$first = Arr::first($array, $callback, $default);

Arr::flatten()

Метод Arr::flatten объединяет многомерный массив в одноуровневый:

use Illuminate\Support\Arr;

$array = ['name' => 'Joe', 'languages' => ['PHP', 'Ruby']];

$flattened = Arr::flatten($array);

// ['Joe', 'PHP', 'Ruby']

Arr::forget()

Метод Arr::forget удаляет переданную пару ключ / значение из глубоко вложенного массива, используя «точечную нотацию»:

use Illuminate\Support\Arr;

$array = ['products' => ['desk' => ['price' => 100]]];

Arr::forget($array, 'products.desk');

// ['products' => []]

Arr::get()

Метод Arr::get извлекает значение из глубоко вложенного массива, используя «точечную нотацию»:

use Illuminate\Support\Arr;

$array = ['products' => ['desk' => ['price' => 100]]];

$price = Arr::get($array, 'products.desk.price');

// 100

Метод Arr::get также принимает значение по умолчанию, которое будет возвращено, если указанный ключ отсутствует в массиве:

use Illuminate\Support\Arr;

$discount = Arr::get($array, 'products.desk.discount', 0);

// 0

Arr::has()

Метод Arr::has проверяет, существует ли переданный элемент или элементы в массиве, используя «точечную нотацию»:

use Illuminate\Support\Arr;

$array = ['product' => ['name' => 'Desk', 'price' => 100]];

$contains = Arr::has($array, 'product.name');

// true

$contains = Arr::has($array, ['product.price', 'product.discount']);

// false

Arr::hasAny()

Метод Arr::hasAny проверяет, существует ли какой-либо элемент в переданном наборе в массиве, используя «точечную нотацию»:

use Illuminate\Support\Arr;

$array = ['product' => ['name' => 'Desk', 'price' => 100]];

$contains = Arr::hasAny($array, 'product.name');

// true

$contains = Arr::hasAny($array, ['product.name', 'product.discount']);

// true

$contains = Arr::hasAny($array, ['category', 'product.discount']);

// false

Arr::isAssoc()

Метод Arr::isAssoc возвращает true, если переданный массив является ассоциативным. Массив считается ассоциативным, если в нем нет последовательных цифровых ключей, начинающихся с нуля:

use Illuminate\Support\Arr;

$isAssoc = Arr::isAssoc(['product' => ['name' => 'Desk', 'price' => 100]]);

// true

$isAssoc = Arr::isAssoc([1, 2, 3]);

// false

Arr::last()

Метод 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()

Метод Arr::only возвращает только указанные пары ключ / значение из переданного массива:

use Illuminate\Support\Arr;

$array = ['name' => 'Desk', 'price' => 100, 'orders' => 10];

$slice = Arr::only($array, ['name', 'price']);

// ['name' => 'Desk', 'price' => 100]

Arr::pluck()

Метод Arr::pluck извлекает все значения для указанного ключа из массива:

use Illuminate\Support\Arr;

$array = [
    ['developer' => ['id' => 1, 'name' => 'Taylor']],
    ['developer' => ['id' => 2, 'name' => 'Abigail']],
];

$names = Arr::pluck($array, 'developer.name');

// ['Taylor', 'Abigail']

Вы также можете задать ключ результирующего списка:

use Illuminate\Support\Arr;

$names = Arr::pluck($array, 'developer.name', 'developer.id');

// [1 => 'Taylor', 2 => 'Abigail']

Arr::prepend()

Метод Arr::prepend помещает элемент в начало массива:

use Illuminate\Support\Arr;

$array = ['one', 'two', 'three', 'four'];

$array = Arr::prepend($array, 'zero');

// ['zero', 'one', 'two', 'three', 'four']

При необходимости вы можете указать ключ, который следует использовать для значения:

use Illuminate\Support\Arr;

$array = ['price' => 100];

$array = Arr::prepend($array, 'Desk', 'name');

// ['name' => 'Desk', 'price' => 100]

Arr::pull()

Метод 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()

Метод Arr::query преобразует массив в строку запроса:

use Illuminate\Support\Arr;

$array = [
    'name' => 'Taylor',
    'order' => [
        'column' => 'created_at',
        'direction' => 'desc'
    ]
];

Arr::query($array);

// name=Taylor&order[column]=created_at&order[direction]=desc

Arr::random()

Метод Arr::random возвращает случайное значение из массива:

use Illuminate\Support\Arr;

$array = [1, 2, 3, 4, 5];

$random = Arr::random($array);

// 4 - (retrieved randomly)

Вы также можете указать количество элементов для возврата в качестве необязательного второго аргумента. Обратите внимание, что при указании этого аргумента, будет возвращен массив, даже если требуется только один элемент:

use Illuminate\Support\Arr;

$items = Arr::random($array, 2);

// [2, 5] - (retrieved randomly)

Arr::set()

Метод Arr::set устанавливает значение с помощью «точечной нотации» во вложенном массиве:

use Illuminate\Support\Arr;

$array = ['products' => ['desk' => ['price' => 100]]];

Arr::set($array, 'products.desk.price', 200);

// ['products' => ['desk' => ['price' => 200]]]

Arr::shuffle()

Метод Arr::shuffle случайным образом перемешивает элементы в массиве:

use Illuminate\Support\Arr;

$array = Arr::shuffle([1, 2, 3, 4, 5]);

// [3, 2, 5, 1, 4] - (generated randomly)

Arr::sort()

Метод Arr::sort сортирует массив по его значениям:

use Illuminate\Support\Arr;

$array = ['Desk', 'Table', 'Chair'];

$sorted = Arr::sort($array);

// ['Chair', 'Desk', 'Table']

Вы также можете отсортировать массив по результатам переданного замыкания:

use Illuminate\Support\Arr;

$array = [
    ['name' => 'Desk'],
    ['name' => 'Table'],
    ['name' => 'Chair'],
];

$sorted = array_values(Arr::sort($array, function ($value) {
    return $value['name'];
}));

/*
    [
        ['name' => 'Chair'],
        ['name' => 'Desk'],
        ['name' => 'Table'],
    ]
*/

Arr::sortRecursive()

Метод Arr::sortRecursive рекурсивно сортирует массив с помощью метода sort для числовых подмассивов и ksort для ассоциативных подмассивов:

use Illuminate\Support\Arr;

$array = [
    ['Roman', 'Taylor', 'Li'],
    ['PHP', 'Ruby', 'JavaScript'],
    ['one' => 1, 'two' => 2, 'three' => 3],
];

$sorted = Arr::sortRecursive($array);

/*
    [
        ['JavaScript', 'PHP', 'Ruby'],
        ['one' => 1, 'three' => 3, 'two' => 2],
        ['Li', 'Roman', 'Taylor'],
    ]
*/

Arr::toCssClasses()

Метод Arr::toCssClasses составляет строку классов CSS исходя из заданных условий. Метод принимает массив классов, где ключ массива содержит класс или классы, которые вы хотите добавить, а значение является булевым выражением. Если элемент массива не имеет строкового ключа, он всегда будет включен в список отрисованных классов:

use Illuminate\Support\Arr;

$isActive = false;
$hasError = true;

$array = ['p-4', 'font-bold' => $isActive, 'bg-red' => $hasError];

$classes = Arr::toCssClasses($array);

/*
    'p-4 bg-red'
*/

При помощи этого метода осуществляется объединение css-классов в Blade, а также в директиве @class.

Arr::undot()

Метод Arr::undot расширяет одномерный массив, использующий “точечную нотацию”, в многомерный массив:

use Illuminate\Support\Arr;

$array = [
    'user.name' => 'Kevin Malone',
    'user.occupation' => 'Accountant',
];

$array = Arr::undot($array);

// ['user' => ['name' => 'Kevin Malone', 'occupation' => 'Accountant']]

Arr::where()

Метод Arr::where фильтрует массив, используя переданное замыкание:

use Illuminate\Support\Arr;

$array = [100, '200', 300, '400', 500];

$filtered = Arr::where($array, function ($value, $key) {
    return is_string($value);
});

// [1 => '200', 3 => '400']

Arr::whereNotNull()

Метод Arr::whereNotNullудаляет все значения null из данного массива:

use Illuminate\Support\Arr;

$array = [0, null];

$filtered = Arr::whereNotNull($array);

// [0 => 0]

Arr::wrap()

Метод Arr::wrap оборачивает переданное значение в массив. Если переданное значение уже является массивом, то оно будет возвращено без изменений:

use Illuminate\Support\Arr;

$string = 'Laravel';

$array = Arr::wrap($string);

// ['Laravel']

Если переданное значение равно null, то будет возвращен пустой массив:

use Illuminate\Support\Arr;

$array = Arr::wrap(null);

// []

data_fill()

Функция data_fill устанавливает отсутствующее значение с помощью «точечной нотации» во вложенном массиве или объекте:

$data = ['products' => ['desk' => ['price' => 100]]];

data_fill($data, 'products.desk.price', 200);

// ['products' => ['desk' => ['price' => 100]]]

data_fill($data, 'products.desk.discount', 10);

// ['products' => ['desk' => ['price' => 100, 'discount' => 10]]]

Допускается использование метасимвола подстановки *:

$data = [
    'products' => [
        ['name' => 'Desk 1', 'price' => 100],
        ['name' => 'Desk 2'],
    ],
];

data_fill($data, 'products.*.price', 200);

/*
    [
        'products' => [
            ['name' => 'Desk 1', 'price' => 100],
            ['name' => 'Desk 2', 'price' => 200],
        ],
    ]
*/

data_get()

Функция data_get возвращает значение с помощью «точечной нотации» из вложенного массива или объекта:

$data = ['products' => ['desk' => ['price' => 100]]];

$price = data_get($data, 'products.desk.price');

// 100

Функция data_get также принимает значение по умолчанию, которое будет возвращено, если указанный ключ не найден:

$discount = data_get($data, 'products.desk.discount', 0);

// 0

Допускается использование метасимвола подстановки *, предназначенный для любого ключа массива или объекта:

$data = [
    'product-one' => ['name' => 'Desk 1', 'price' => 100],
    'product-two' => ['name' => 'Desk 2', 'price' => 150],
];

data_get($data, '*.name');

// ['Desk 1', 'Desk 2'];

data_set()

Функция data_set устанавливает значение с помощью «точечной нотации» во вложенном массиве или объекте:

$data = ['products' => ['desk' => ['price' => 100]]];

data_set($data, 'products.desk.price', 200);

// ['products' => ['desk' => ['price' => 200]]]

Допускается использование метасимвола подстановки *:

$data = [
    'products' => [
        ['name' => 'Desk 1', 'price' => 100],
        ['name' => 'Desk 2', 'price' => 150],
    ],
];

data_set($data, 'products.*.price', 200);

/*
    [
        'products' => [
            ['name' => 'Desk 1', 'price' => 200],
            ['name' => 'Desk 2', 'price' => 200],
        ],
    ]
*/

По умолчанию все существующие значения перезаписываются. Если вы хотите, чтобы значение было установлено только в том случае, если оно не существует, вы можете передать false в качестве четвертого аргумента:

$data = ['products' => ['desk' => ['price' => 100]]];

data_set($data, 'products.desk.price', 200, $overwrite = false);

// ['products' => ['desk' => ['price' => 100]]]

head()

Функция head возвращает первый элемент переданного массива:

$array = [100, 200, 300];

$first = head($array);

// 100

last()

Функция last возвращает последний элемент переданного массива:

$array = [100, 200, 300];

$last = last($array);

// 300

Пути

app_path()

Функция app_path возвращает полный путь к каталогу вашего приложения app. Вы также можете использовать функцию app_path для создания полного пути к файлу относительно каталога приложения:

$path = app_path();

$path = app_path('Http/Controllers/Controller.php');

base_path()

Функция base_path возвращает полный путь к корневому каталогу вашего приложения. Вы также можете использовать функцию base_path для генерации полного пути к заданному файлу относительно корневого каталога проекта:

$path = base_path();

$path = base_path('vendor/bin');

config_path()

Функция config_path возвращает полный путь к каталогу config вашего приложения. Вы также можете использовать функцию config_path для создания полного пути к заданному файлу в каталоге конфигурации приложения:

$path = config_path();

$path = config_path('app.php');

database_path()

Функция database_path возвращает полный путь к каталогу database вашего приложения. Вы также можете использовать функцию database_path для генерации полного пути к заданному файлу в каталоге базы данных:

$path = database_path();

$path = database_path('factories/UserFactory.php');

mix()

Функция mix возвращает путь к версионированному файлу Mix:

$path = mix('css/app.css');

public_path()

Функция public_path возвращает полный путь к каталогу public вашего приложения. Вы также можете использовать функцию public_path для генерации полного пути к заданному файлу в публичном каталоге:

$path = public_path();

$path = public_path('css/app.css');

resource_path()

Функция resource_path возвращает полный путь к каталогу resources вашего приложения. Вы также можете использовать функцию resource_path, чтобы сгенерировать полный путь к заданному файлу в каталоге исходников:

$path = resource_path();

$path = resource_path('sass/app.scss');

storage_path()

Функция storage_path возвращает полный путь к каталогу storage вашего приложения. Вы также можете использовать функцию storage_path для генерации полного пути к заданному файлу в каталоге хранилища:

$path = storage_path();

$path = storage_path('app/file.txt');

Строки

__()

Функция __ переводит переданную строку перевода или ключ перевода, используя ваши файлы локализации:

echo __('Welcome to our application');

echo __('messages.welcome');

Если указанная строка перевода или ключ не существует, то функция __ вернет переданное значение. Итак, используя приведенный выше пример, функция __ вернет messages.welcome, если этот ключ перевода не существует.

class_basename()

Функция class_basename возвращает имя переданного класса с удаленным пространством имен этого класса:

$class = class_basename('Foo\Bar\Baz');

// Baz

e()

Функция e запускает PHP-функцию htmlspecialchars с параметром double_encode, установленным по умолчанию в true:

echo e('<html>foo</html>');

// &lt;html&gt;foo&lt;/html&gt;

preg_replace_array()

Функция 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()

Метод Str::after возвращает все после переданного значения в строке. Если значение не существует в строке, то будет возвращена вся строка:

use Illuminate\Support\Str;

$slice = Str::after('This is my name', 'This is');

// ' my name'

Str::afterLast()

Метод Str::afterLast возвращает все после последнего вхождения переданного значения в строке. Если значение не существует в строке, то будет возвращена вся строка:

use Illuminate\Support\Str;

$slice = Str::afterLast('App\Http\Controllers\Controller', '\\');

// 'Controller'

Str::ascii()

Метод Str::ascii попытается транслитерировать строку в ASCII значение:

use Illuminate\Support\Str;

$slice = Str::ascii('û');

// 'u'

Str::before()

Метод Str :: before возвращает все до переданного значения в строке:

use Illuminate\Support\Str;

$slice = Str::before('This is my name', 'my name');

// 'This is '

Str::beforeLast()

Метод Str::beforeLast возвращает все до последнего вхождения переданного значения в строке:

use Illuminate\Support\Str;

$slice = Str::beforeLast('This is my name', 'is');

// 'This '

Str::between()

Метод Str::between возвращает часть строки между двумя значениями:

use Illuminate\Support\Str;

$slice = Str::between('This is my name', 'This', 'name');

// ' is my '

Str::camel()

Метод Str::camel преобразует переданную строку в camelCase:

use Illuminate\Support\Str;

$converted = Str::camel('foo_bar');

// fooBar

Str::contains()

Метод 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()

Метод Str::containsAll определяет, содержит ли переданная строка все значения массива:

use Illuminate\Support\Str;

$containsAll = Str::containsAll('This is my name', ['my', 'name']);

// true

Str::endsWith()

Метод 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()

Метод Str::finish добавляет один экземпляр указанного значения в переданную строку, если она еще не заканчивается этим значением:

use Illuminate\Support\Str;

$adjusted = Str::finish('this/string', '/');

// this/string/

$adjusted = Str::finish('this/string/', '/');

// this/string/

Str::headline()

Метод Str::headline преобразует строки, разделенные регистром, дефисами или подчеркиванием, в строку, разделенную пробелами, с заглавной первой буквой каждого слова:

use Illuminate\Support\Str;

$headline = Str::headline('steve_jobs');

// Steve Jobs

$headline = Str::headline('EmailNotificationSent');

// Email Notification Sent

Str::is()

Метод Str::is определяет, соответствует ли переданная строка указанному шаблону. Допускается использование метасимвола подстановки *:

use Illuminate\Support\Str;

$matches = Str::is('foo*', 'foobar');

// true

$matches = Str::is('baz*', 'foobar');

// false

Str::isAscii()

Метод Str::isAscii определяет, является ли переданная строка 7-битной ASCII:

use Illuminate\Support\Str;

$isAscii = Str::isAscii('Taylor');

// true

$isAscii = Str::isAscii('ü');

// false

Str::isUuid()

Метод Str::isUuid определяет, является ли переданная строка допустимым UUID:

use Illuminate\Support\Str;

$isUuid = Str::isUuid('a0a2a2d2-0b87-4a18-83f2-2529882be2de');

// true

$isUuid = Str::isUuid('laravel');

// false

Str::kebab()

Метод Str::kebab преобразует переданную строку в kebab-case:

use Illuminate\Support\Str;

$converted = Str::kebab('fooBar');

// foo-bar

Str::length()

Метод Str::length возвращает длину переданной строки:

use Illuminate\Support\Str;

$length = Str::length('Laravel');

// 7

Str::limit()

Метод 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()

Метод Str::lower преобразует переданную строку в нижний регистр:

use Illuminate\Support\Str;

$converted = Str::lower('LARAVEL');

// laravel

Str::markdown()

Метод 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()

Метод 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()

Метод Str::orderedUuid генерирует UUID с «префиксом временной метки», который может быть эффективно сохранен в индексированном столбце базы данных. Каждый UUID, созданный с помощью этого метода, будет отсортирован после UUID, ранее созданных с помощью этого метода:

use Illuminate\Support\Str;

return (string) Str::orderedUuid();

Str::padBoth()

Метод Str::padBoth оборачивает функцию str_pad PHP, заполняя обе стороны строки другой строкой, пока конечная строка не достигнет желаемой длины:

use Illuminate\Support\Str;

$padded = Str::padBoth('James', 10, '_');

// '__James___'

$padded = Str::padBoth('James', 10);

// '  James   '

Str::padLeft()

Метод Str::padLeft оборачивает функцию str_pad PHP, заполняя левую часть строки другой строкой, пока конечная строка не достигнет желаемой длины:

use Illuminate\Support\Str;

$padded = Str::padLeft('James', 10, '-=');

// '-=-=-James'

$padded = Str::padLeft('James', 10);

// '     James'

Str::padRight()

Метод Str::padRight оборачивает функцию str_pad PHP, заполняя правую часть строки другой строкой, пока конечная строка не достигнет желаемой длины:

use Illuminate\Support\Str;

$padded = Str::padRight('James', 10, '-');

// 'James-----'

$padded = Str::padRight('James', 10);

// 'James     '

Str::plural()

Метод 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()

Метод 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()

Метод Str::random генерирует случайную строку указанной длины. Этот метод использует функцию random_bytes PHP:

use Illuminate\Support\Str;

$random = Str::random(40);

Str::remove()

Метод 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()

Метод Str::replace заменяет в строке одну подстроку другой:

use Illuminate\Support\Str;

$string = 'Laravel 8.x';

$replaced = Str::replace('8.x', '9.x', $string);

// Laravel 9.x

Str::replaceArray()

Метод 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()

Метод 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()

Метод 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()

Метод Str::reverse переворачивает данную строку:

use Illuminate\Support\Str;

$reversed = Str::reverse('Hello World');

// dlroW olleH

Str::singular()

Метод Str::singular преобразует слово в форму единственного числа. В настоящее время этот метод поддерживает только английский язык:

use Illuminate\Support\Str;

$singular = Str::singular('cars');

// car

$singular = Str::singular('children');

// child

Str::slug()

Метод Str::slug создает «дружественный фрагмент» URL-адреса из переданной строки:

use Illuminate\Support\Str;

$slug = Str::slug('Laravel 5 Framework', '-');

// laravel-5-framework

Str::snake()

Метод Str::snake преобразует переданную строку в snake_case:

use Illuminate\Support\Str;

$converted = Str::snake('fooBar');

// foo_bar

$converted = Str::snake('fooBar', '-');

// foo-bar

Str::start()

Метод Str::start добавляет один экземпляр указанного значения в переданную строку, если она еще не начинается этим значением:

use Illuminate\Support\Str;

$adjusted = Str::start('this/string', '/');

// /this/string

$adjusted = Str::start('/this/string', '/');

// /this/string

Str::startsWith()

Метод Str::startsWith определяет, начинается ли переданная строка с указанного значения:

use Illuminate\Support\Str;

$result = Str::startsWith('This is my name', 'This');

// true

Str::studly()

Метод Str::studly преобразует переданную строку в StudlyCase:

use Illuminate\Support\Str;

$converted = Str::studly('foo_bar');

// FooBar

Str::substr()

Метод Str::substr возвращает часть строки, заданную параметрами «начало» и «длина»:

use Illuminate\Support\Str;

$converted = Str::substr('The Laravel Framework', 4, 7);

// Laravel

Str::substrCount()

Метод Str::substrCount возвращает число вхождений подстроки в строку:

use Illuminate\Support\Str;

$count = Str::substrCount('If you like ice cream, you will like snow cones.', 'like');

// 2

Str::substrReplace()

Метод Str::substrReplace заменяет текст в части строки, начиная с позиции, указанной третьим аргументом, и заменяет число символов, указанное четвертым аргументом. Передав 0 четвертым аргументом в метод, строка будет вставлена в указанную позицию без замены каких-либо существующих символов в строке:

use Illuminate\Support\Str;

$result = Str::substrReplace('1300', ':', 2); 
// 13:

$result = Str::substrReplace('1300', ':', 2, 0); 
// 13:00

Str::title()

Метод 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()

Метод Str::toHtmlString преобразует экземпляр строки в экземпляр Illuminate\Support\HtmlString, который может отображаться в шаблонах Blade:

use Illuminate\Support\Str;

$htmlString = Str::of('Nuno Maduro')->toHtmlString();

Str::ucfirst()

Метод Str::ucfirst возвращает переданную строку с первой заглавной буквой:

use Illuminate\Support\Str;

$string = Str::ucfirst('foo bar');

// Foo bar

Str::upper()

Метод Str::upper преобразует переданную строку в верхний регистр:

use Illuminate\Support\Str;

$string = Str::upper('laravel');

// LARAVEL

Str::uuid()

Метод Str::uuid генерирует UUID (версия 4):

use Illuminate\Support\Str;

return (string) Str::uuid();

Str::wordCount

Метод Str::wordCount возвращает число слов в строке:

use Illuminate\Support\Str;

Str::wordCount('Hello, world!'); // 2

Str::words()

Метод Str::words ограничивает количество слов в строке. Дополнительная строка может быть передана этому методу через его третий аргумент, чтобы указать, какая строка должна быть добавлена в конец усеченной строки:

use Illuminate\Support\Str;

return Str::words('Perfectly balanced, as all things should be.', 3, ' >>>');

// Perfectly balanced, as >>>

trans()

Функция trans переводит переданный ключ перевода, используя ваши файлы локализации:

echo trans('messages.welcome');

Если указанный ключ перевода не существует, функция trans вернет данный ключ. Итак, используя приведенный выше пример, функция trans вернет messages.welcome, если ключ перевода не существует.

trans_choice()

Функция trans_choice переводит заданный ключ перевода с изменением формы слова:

echo trans_choice('messages.notifications', $unreadCount);

Если указанный ключ перевода не существует, функция trans_choice вернет данный ключ. Итак, используя приведенный выше пример, функция trans_choice вернет messages.notifications, если ключ перевода не существует.

Строки Fluent

Строки Fluent обеспечивают более гибкий объектно-ориентированный интерфейс для работы со строковыми значениями, позволяя объединять несколько строковых операций вместе с использованием более удобочитаемого синтаксиса по сравнению с традиционными строковыми операциями.

after

Метод after возвращает все после переданного значения в строке. Вся строка будет возвращена, если значение не существует в строке:

use Illuminate\Support\Str;

$slice = Str::of('This is my name')->after('This is');

// ' my name'

afterLast

Метод afterLast возвращает все после последнего вхождения переданного значения в строке. Вся строка будет возвращена, если значение не существует в строке:

use Illuminate\Support\Str;

$slice = Str::of('App\Http\Controllers\Controller')->afterLast('\\');

// 'Controller'

append

Метод append добавляет указанные значения в строку:

use Illuminate\Support\Str;

$string = Str::of('Taylor')->append(' Otwell');

// 'Taylor Otwell'

ascii

Метод ascii попытается транслитерировать строку в значение ASCII:

use Illuminate\Support\Str;

$string = Str::of('ü')->ascii();

// 'u'

basename

Метод 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

Метод before возвращает все до указанного значения в строке:

use Illuminate\Support\Str;

$slice = Str::of('This is my name')->before('my name');

// 'This is '

beforeLast

Метод beforeLast возвращает все до последнего вхождения переданного значения в строку:

use Illuminate\Support\Str;

$slice = Str::of('This is my name')->beforeLast('is');

// 'This '

between

Метод between возвращает часть строки между двумя значениями:

use Illuminate\Support\Str;

$converted = Str::of('This is my name')->between('This', 'name');

// ' is my '

camel

Метод camel преобразует переданную строку в camelCase:

use Illuminate\Support\Str;

$converted = Str::of('foo_bar')->camel();

// fooBar

contains

Метод 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

Метод containsAll определяет, содержит ли переданная строка все значения массива:

use Illuminate\Support\Str;

$containsAll = Str::of('This is my name')->containsAll(['my', 'name']);

// true

dirname

Метод 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

Метод 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

Метод exactly определяет, является ли переданная строка точным совпадением с другой строкой:

use Illuminate\Support\Str;

$result = Str::of('Laravel')->exactly('Laravel');

// true

explode

Метод explode разделяет строку по заданному разделителю и возвращает коллекцию, содержащую каждый раздел строки разбиения:

use Illuminate\Support\Str;

$collection = Str::of('foo bar baz')->explode(' ');

// collect(['foo', 'bar', 'baz'])

finish

Метод finish добавляет один экземпляр указанного значения в переданную строку, если она еще не заканчивается этим значением:

use Illuminate\Support\Str;

$adjusted = Str::of('this/string')->finish('/');

// this/string/

$adjusted = Str::of('this/string/')->finish('/');

// this/string/

is

Метод is определяет, соответствует ли переданная строка указанному шаблону. Допускается использование метасимвола подстановки *:

use Illuminate\Support\Str;

$matches = Str::of('foobar')->is('foo*');

// true

$matches = Str::of('foobar')->is('baz*');

// false

isAscii

Метод isAscii определяет, является ли переданная строка строкой ASCII:

use Illuminate\Support\Str;

$result = Str::of('Taylor')->isAscii();

// true

$result = Str::of('ü')->isAscii();

// false

isEmpty

Метод isEmpty определяет, является ли переданная строка пустой:

use Illuminate\Support\Str;

$result = Str::of('  ')->trim()->isEmpty();

// true

$result = Str::of('Laravel')->trim()->isEmpty();

// false

isNotEmpty

Метод isNotEmpty определяет, является ли переданная строка не пустой:

use Illuminate\Support\Str;

$result = Str::of('  ')->trim()->isNotEmpty();

// false

$result = Str::of('Laravel')->trim()->isNotEmpty();

// true

isUuid

Метод isUuid определяет, является ли заданная строка UUID:

use Illuminate\Support\Str;

$result = Str::of('5ace9ab9-e9cf-4ec6-a19d-5881212a452c')->isUuid();

// true

$result = Str::of('Taylor')->isUuid();

// false    

kebab

Метод kebab преобразует переданную строку в kebab-case:

use Illuminate\Support\Str;

$converted = Str::of('fooBar')->kebab();

// foo-bar

length

Метод length возвращает длину переданной строки:

use Illuminate\Support\Str;

$length = Str::of('Laravel')->length();

// 7

limit

Метод 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

Метод lower преобразует переданную строку в нижний регистр:

use Illuminate\Support\Str;

$result = Str::of('LARAVEL')->lower();

// 'laravel'

ltrim

Метод ltrim удаляет символы из начала строки:

use Illuminate\Support\Str;

$string = Str::of('  Laravel  ')->ltrim();

// 'Laravel  '

$string = Str::of('/Laravel/')->ltrim('/');

// 'Laravel/'

markdown

Метод 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

Метод 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

Метод match вернет часть строки, которая соответствует указанному шаблону регулярного выражения:

use Illuminate\Support\Str;

$result = Str::of('foo bar')->match('/bar/');

// 'bar'

$result = Str::of('foo bar')->match('/foo (.*)/');

// 'bar'

matchAll

Метод 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

Метод padBoth оборачивает функцию str_pad PHP, заполняя обе стороны строки другой строкой, пока конечная строка не достигнет желаемой длины:

use Illuminate\Support\Str;

$padded = Str::of('James')->padBoth(10, '_');

// '__James___'

$padded = Str::of('James')->padBoth(10);

// '  James   '

padLeft

Метод padLeft оборачивает функцию str_pad PHP, заполняя левую часть строки другой строкой, пока конечная строка не достигнет желаемой длины:

use Illuminate\Support\Str;

$padded = Str::of('James')->padLeft(10, '-=');

// '-=-=-James'

$padded = Str::of('James')->padLeft(10);

// '     James'

padRight

Метод padRight оборачивает функцию str_pad PHP, заполняя правую часть строки другой строкой, пока конечная строка не достигнет желаемой длины:

use Illuminate\Support\Str;

$padded = Str::of('James')->padRight(10, '-');

// 'James-----'

$padded = Str::of('James')->padRight(10);

// 'James     '

pipe

Метод 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

Метод 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

Метод prepend добавляет указанные значения в начало строки:

use Illuminate\Support\Str;

$string = Str::of('Framework')->prepend('Laravel ');

// Laravel Framework

remove

Метод remove удаляет указанную подстроку или массив подстрок в строке:

use Illuminate\Support\Str;

$string = Str::of('Arkansas is quite beautiful!')->remove('quite');

// Arkansas is beautiful!

Вы можете передать false в качестве второго аргумента для игнорирования регистра удаляемых строк.

replace

Метод replace заменяет указанную строку внутри строки:

use Illuminate\Support\Str;

$replaced = Str::of('Laravel 6.x')->replace('6.x', '7.x');

// Laravel 7.x

replaceArray

Метод 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

Метод 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

Метод 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

Метод 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

Метод rtrim удаляет символы из конца строки:

use Illuminate\Support\Str;

$string = Str::of('  Laravel  ')->rtrim();

// '  Laravel'

$string = Str::of('/Laravel/')->rtrim('/');

// '/Laravel'

scan

Метод scan анализирует входные данные из строки в коллекцию в соответствии с форматом, поддерживаемым sscanf функцией PHP:

use Illuminate\Support\Str;

$collection = Str::of('filename.jpg')->scan('%[^.].%s');

// collect(['filename', 'jpg'])

singular

Метод singular преобразует слово в форму единственного числа. В настоящее время этот метод поддерживает только английский язык:

use Illuminate\Support\Str;

$singular = Str::of('cars')->singular();

// car

$singular = Str::of('children')->singular();

// child

slug

Метод slug создает «дружественный фрагмент» URL-адреса из переданной строки:

use Illuminate\Support\Str;

$slug = Str::of('Laravel Framework')->slug('-');

// laravel-framework

snake

Метод snake преобразует переданную строку в snake_case:

use Illuminate\Support\Str;

$converted = Str::of('fooBar')->snake();

// foo_bar

split

Метод split разбивает строку на коллекцию с помощью регулярного выражения:

use Illuminate\Support\Str;

$segments = Str::of('one, two, three')->split('/[\s,]+/');

// collect(["one", "two", "three"])

start

Метод start добавляет один экземпляр указанного значения в переданную строку, если она еще не начинается этим значением:

use Illuminate\Support\Str;

$adjusted = Str::of('this/string')->start('/');

// /this/string

$adjusted = Str::of('/this/string')->start('/');

// /this/string

startsWith

Метод startsWith определяет, начинается ли переданная строка с указанного значения:

use Illuminate\Support\Str;

$result = Str::of('This is my name')->startsWith('This');

// true

studly

Метод studly преобразует переданную строку в StudlyCase:

use Illuminate\Support\Str;

$converted = Str::of('foo_bar')->studly();

// FooBar

substr

Метод substr возвращает часть строки, заданную параметрами «начало» и «длина»:

use Illuminate\Support\Str;

$string = Str::of('Laravel Framework')->substr(8);

// Framework

$string = Str::of('Laravel Framework')->substr(8, 5);

// Frame

substrReplace

Метод 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 передает строку заданному замыканию, позволяя вам взаимодействовать с ней, не затрагивая при этом саму строку. Исходная строка возвращается методом tap независимо от того, что возвращает замыкание:

use Illuminate\Support\Str;

$string = Str::of('Laravel')
    ->append(' Framework')
    ->tap(function ($string) {
        dump('String after append: ' . $string);
    })
    ->upper();

// LARAVEL FRAMEWORK

test

Метод test определяет, соответствует ли строка переданному шаблону регулярного выражения:

use Illuminate\Support\Str;

$result = Str::of('Laravel Framework')->test('/Laravel/');

// true

title

Метод 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

Метод trim обрезает переданную строку:

use Illuminate\Support\Str;

$string = Str::of('  Laravel  ')->trim();

// 'Laravel'

$string = Str::of('/Laravel/')->trim('/');

// 'Laravel'

ucfirst

Метод ucfirst возвращает переданную строку с первой заглавной буквой:

use Illuminate\Support\Str;

$string = Str::of('foo bar')->ucfirst();

// Foo bar

upper

Метод upper преобразует переданную строку в верхний регистр:

use Illuminate\Support\Str;

$adjusted = Str::of('laravel')->upper();

// LARAVEL

when

Метод when вызывает указанное замыкание, если переданное условие истинно. Замыкание получит экземпляр Fluent:

use Illuminate\Support\Str;

$string = Str::of('Taylor')
                ->when(true, function ($string) {
                    return $string->append(' Otwell');
                });

// 'Taylor Otwell'

При необходимости вы можете передать другое замыкание в качестве третьего параметра методу when. Это замыкание будет выполнено, если параметр условия оценивается как false.

whenContains

Метод 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

Метод 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 вызывает переданное замыкание, если строка пуста. Если замыкание возвращает значение, то это значение будет возвращено методом whenEmpty. Если замыкание не возвращает значение, будет возвращен экземпляр Fluent:

use Illuminate\Support\Str;

$string = Str::of('  ')->whenEmpty(function ($string) {
    return $string->trim()->prepend('Laravel');
});

// 'Laravel'

whenNotEmpty

Метод whenNotEmpty вызывает данное замыкание, если строка не пуста. Если замыкание возвращает значение, это значение также будет возвращено методом whenNotEmpty. Если замыкание не возвращает значение, будет возвращен экземпляр класса Stringable:

use Illuminate\Support\Str;

$string = Str::of('Framework')->whenNotEmpty(function ($string) {
    return $string->prepend('Laravel ');
});

// 'Laravel Framework'

whenStartsWith

Метод whenStartsWith вызывает данное замыкание, если строка начинается с данной подстроки. Замыкание получит свободный экземпляр класса Stringable в качестве аргумента:

use Illuminate\Support\Str;

$string = Str::of('disney world')->whenStartsWith('disney', function ($string) {
    return $string->title();
});

// 'Disney World'

whenEndsWith

Метод whenEndsWith вызывает данное замыкание, если строка заканчивается заданной подстрокой. Замыкание получит свободный экземпляр строки:

use Illuminate\Support\Str;

$string = Str::of('disney world')->whenEndsWith('world', function ($string) {
    return $string->title();
});

// 'Disney World'

whenExactly

Метод whenExactly вызывает данное замыкание, если строка точно соответствует заданной строке. Закрытие получит свободный экземпляр строки:

use Illuminate\Support\Str;

$string = Str::of('laravel')->whenExactly('laravel', function ($string) {
    return $string->title();
});

// 'Laravel'

whenIs

Метод whenIs вызывает данное замыкание, если строка соответствует заданному шаблону. Звездочки могут использоваться в качестве подстановочных знаков. Замыкание получит экземпляр класса Stringable в качестве аргумента:

use Illuminate\Support\Str;

$string = Str::of('foo/bar')->whenIs('foo/*', function ($string) {
    return $string->append('/baz');
});

// 'foo/bar/baz'

whenIsAscii

Метод whenIsAscii вызывает данное замыкание, если строка представляет собой 7-битный ASCII. Замыкание получит экземпляр класса Stringable в качестве аргумента:

use Illuminate\Support\Str;

$string = Str::of('foo/bar')->whenIsAscii('laravel', function ($string) {
    return $string->title();
});

// 'Laravel'

whenIsUuid

Метод 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

Метод whenTest вызывает данное замыкание, если строка соответствует заданному регулярному выражению. Замыкание получит экземпляр класса Stringable в качестве аргумента:

use Illuminate\Support\Str;

$string = Str::of('laravel framework')->whenTest('/laravel/', function ($string) {
    return $string->title();
});

// 'Laravel Framework'

wordCount

Метод wordCount возвращает число слов в строке:

use Illuminate\Support\Str;

Str::of('Hello, world!')->wordCount(); // 2

words

Метод words ограничивает количество слов в строке. Дополнительная строка может быть передана этому методу, чтобы указать, какая строка должна быть добавлена в конец усеченной строки:

use Illuminate\Support\Str;

$string = Str::of('Perfectly balanced, as all things should be.')->words(3, ' >>>');

// Perfectly balanced, as >>>

URL-адреса

action()

Функция action генерирует URL-адрес для переданного действия контроллера:

use App\Http\Controllers\HomeController;

$url = action([HomeController::class, 'index']);

Если метод принимает параметры маршрута, вы можете передать их как второй аргумент методу:

$url = action([UserController::class, 'profile'], ['id' => 1]);

asset()

Функция 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()

Функция 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()

Функция secure_asset генерирует URL для исходника, используя HTTPS:

$url = secure_asset('img/photo.jpg');

secure_url()

Функция secure_url генерирует полный URL-адрес для указанного пути, используя HTTPS. Дополнительные сегменты URL могут быть переданы во втором аргументе функции:

$url = secure_url('user/profile');

$url = secure_url('user/profile', [1]);

url()

Функция url генерирует полный URL-адрес для указанного пути:

$url = url('user/profile');

$url = url('user/profile', [1]);

Если путь не указан, будет возвращен экземпляр Illuminate\Routing\UrlGenerator:

$current = url()->current();

$full = url()->full();

$previous = url()->previous();

Разное

abort()

Функция abort генерирует HTTP-исключение, которое будет обработано обработчиком исключения:

abort(403);

Вы также можете указать текст ответа исключения и пользовательские заголовки ответа, которые должны быть отправлены в браузер:

abort(403, 'Unauthorized.', $headers);

abort_if()

Функция abort_if генерирует исключение HTTP, если переданное логическое выражение имеет значение true:

abort_if(! Auth::user()->isAdmin(), 403);

Подобно методу abort, вы также можете указать текст ответа исключения третьим аргументом и массив пользовательских заголовков ответа в качестве четвертого аргумента.

abort_unless()

Функция abort_unless генерирует исключение HTTP, если переданное логическое выражение оценивается как false:

abort_unless(Auth::user()->isAdmin(), 403);

Подобно методу abort, вы также можете указать текст ответа исключения третьим аргументом и массив пользовательских заголовков ответа в качестве четвертого аргумента.

app()

Функция app возвращает экземпляр контейнера служб:

$container = app();

Вы можете передать имя класса или интерфейса для извлечения его из контейнера:

$api = app('HelpSpot\API');

auth()

Функция auth возвращает экземпляр аутентификатора. Вы можете использовать его вместо фасада Auth для удобства:

$user = auth()->user();

При необходимости вы можете указать, к какому экземпляру охранника вы хотите получить доступ:

$user = auth('admin')->user();

back()

Функция back генерирует HTTP-ответ перенаправления в предыдущее расположение пользователя:

return back($status = 302, $headers = [], $fallback = '/');

return back();

bcrypt()

Функция bcrypt хеширует переданное значение, используя Bcrypt. Вы можете использовать его как альтернативу фасаду Hash:

$password = bcrypt('my-secret-password');

blank()

Функция blank проверяет, является ли переданное значение «пустым»:

blank('');
blank('   ');
blank(null);
blank(collect());

// true

blank(0);
blank(true);
blank(false);

// false

Обратной функции blank является функция filled.

broadcast()

Функция broadcast транслирует переданное событие своим слушателям:

broadcast(new UserRegistered($user));

broadcast(new UserRegistered($user))->toOthers();

cache()

Функция cache используется для получения значений из кеша. Если переданный ключ не существует в кеше, будет возвращено необязательное значение по умолчанию:

$value = cache('key');

$value = cache('key', 'default');

Вы можете добавлять элементы в кеш, передавая массив пар ключ / значение в функцию. Вы также должны передать количество секунд или продолжительность актуальности кешированного значения:

cache(['key' => 'value'], 300);

cache(['key' => 'value'], now()->addSeconds(10));

class_uses_recursive()

Функция class_uses_recursive возвращает все трейты, используемые классом, включая трейты, используемые всеми его родительскими классами:

$traits = class_uses_recursive(App\Models\User::class);

collect()

Функция collect создает экземпляр коллекции переданного значения:

$collection = collect(['taylor', 'abigail']);

config()

Функция config получает значение переменной конфигурации. Доступ к значениям конфигурации можно получить с помощью «точечной нотации», включающую имя файла и параметр, к которому вы хотите получить доступ. Значение по умолчанию может быть указано и возвращается, если опция конфигурации не существует:

$value = config('app.timezone');

$value = config('app.timezone', $default);

Вы можете установить переменные конфигурации на время выполнения скрипта, передав массив пар ключ / значение. Однако обратите внимание, что эта функция влияет только на значение конфигурации для текущего запроса и не обновляет фактические значения конфигурации:

config(['app.debug' => true]);

Функция cookie создает новый экземпляр Cookie:

$cookie = cookie('name', 'value', $minutes);

csrf_field()

Функция csrf_field генерирует HTML «скрытого» поля ввода, содержащее значение токена CSRF. Например, используя синтаксис Blade:

{{ csrf_field() }}

csrf_token()

Функция csrf_token возвращает значение текущего токена CSRF:

$token = csrf_token();

dd()

Функция dd выводит переданные переменные и завершает выполнение скрипта:

dd($value);

dd($value1, $value2, $value3, ...);

Если вы не хотите останавливать выполнение вашего скрипта, используйте вместо этого функцию dump.

dispatch()

Функция dispatch помещает переданное задание в очередь заданий Laravel:

dispatch(new App\Jobs\SendEmails);

dump()

Функция dump выводит переданные переменные:

dump($value);

dump($value1, $value2, $value3, ...);

Если вы хотите прекратить выполнение скрипта после вывода переменных, используйте вместо этого функцию dd.

env()

Функция env возвращает значение переменной окружения или значение по умолчанию:

$env = env('APP_ENV');

$env = env('APP_ENV', 'production');

Если вы выполнили команду config:cache во время процесса развертывания, вы должны быть уверены, что вызываете функцию env только из файлов конфигурации. Как только конфигурации будут кешированы, файл .env не будет загружаться, и все вызовы функции env будут возвращать null.

event()

Функция event отправляет переданное событие своим слушателям:

event(new UserRegistered($user));

filled()

Функция filled проверяет, является ли переданное значение не «пустым»:

filled(0);
filled(true);
filled(false);

// true

filled('');
filled('   ');
filled(null);
filled(collect());

// false

Обратной функции filled является функция blank.

info()

Функция info запишет информацию в журнал:

info('Some helpful information!');

Также функции может быть передан массив контекстных данных:

info('User login attempt failed.', ['id' => $user->id]);

logger()

Функцию logger можно использовать для записи сообщения уровня debug в журнал:

logger('Debug message');

Также функции может быть передан массив контекстных данных:

logger('User has logged in.', ['id' => $user->id]);

Если функции не передано значение, то будет возвращен экземпляр регистратора:

logger()->error('You are not allowed here.');

method_field()

Функция method_field генерирует HTML «скрытого» поле ввода, содержащее поддельное значение HTTP-метода формы. Например, используя синтаксис Blade:

<form method="POST">
    {{ method_field('DELETE') }}
</form>

now()

Функция now создает новый экземпляр Illuminate\Support\Carbon для текущего времени:

$now = now();

old()

Функция old возвращает значение прежнего ввода, краткосрочно сохраненное в сессии:

$value = old('value');

$value = old('value', 'default');

optional()

Функция 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 = policy(App\Models\User::class);

redirect()

Функция redirect возвращает HTTP-ответ перенаправления или возвращает экземпляр перенаправителя, если вызывается без аргументов:

return redirect($to = null, $status = 302, $headers = [], $https = null);

return redirect('/home');

return redirect()->route('route.name');

report()

Функция report сообщит об исключении, используя ваш обработчик исключений:

report($e);

Функция report также принимает строку в качестве аргумента. Когда в функцию передается строка, она создает исключение с переданной строкой в качестве сообщения:

report('Something went wrong.');

request()

Функция request возвращает экземпляр текущего запроса или получает значение поля ввода из текущего запроса:

$request = request();

$value = request('key', $default);

rescue()

Функция 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()

Функция resolve извлекает экземпляр связанного с переданным классом или интерфейсом, используя контейнер служб:

$api = resolve('HelpSpot\API');

response()

Функция response создает экземпляр ответа или получает экземпляр фабрики ответов:

return response('Hello World', 200, $headers);

return response()->json(['foo' => 'bar'], 200, $headers);

retry()

Функция retry пытается выполнить переданную функцию, пока не будет достигнут указанный лимит попыток. Если функция не выбросит исключение, то будет возвращено её значение. Если функция выбросит исключение, то будет автоматически повторена. Если максимальное количество попыток превышено, будет выброшено исключение:

return retry(5, function () {
    // Attempt 5 times while resting 100ms 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()

Функция session используется для получения или задания значений сессии:

$value = session('key');

Вы можете установить значения, передав массив пар ключ / значение в функцию:

session(['chairs' => 7, 'instruments' => 3]);

Если в функцию не передано значение, то будет возвращен экземпляр хранилища сессий:

$value = session()->get('key');

session()->put('key', $value);

tap()

Функция 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()

Функция throw_if выбрасывает переданное исключение, если указанное логическое выражение оценивается как true:

throw_if(! Auth::user()->isAdmin(), AuthorizationException::class);

throw_if(
    ! Auth::user()->isAdmin(),
    AuthorizationException::class,
    'You are not allowed to access this page.'
);

throw_unless()

Функция throw_unless выбрасывает переданное исключение, если указанное логическое выражение оценивается как false:

throw_unless(Auth::user()->isAdmin(), AuthorizationException::class);

throw_unless(
    Auth::user()->isAdmin(),
    AuthorizationException::class,
    'You are not allowed to access this page.'
);

today()

Функция today создает новый экземпляр Illuminate\Support\Carbon для текущей даты:

$today = today();

trait_uses_recursive()

Функция trait_uses_recursive возвращает все трейты, используемые трейтом:

$traits = trait_uses_recursive(\Illuminate\Notifications\Notifiable::class);

transform()

Функция transform выполняет замыкание для переданного значения, если значение не пустое, и возвращает результат замыкания:

$callback = function ($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 = validator($data, $rules, $messages);

value()

Функция value возвращает переданное значение. Однако, если вы передадите замыкание в функцию, то замыкание будет выполнено, и будет возвращен его результат:

$result = value(true);

// true

$result = value(function () {
    return false;
});

// false

view()

Функция view возвращает экземпляр представления:

return view('auth.login');

with()

Функция 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