Хелперы

Введение

Laravel включает множество глобальных вспомогательных PHP-функций ("хелперов"). Большинство таких функций используются самим фреймворком; однако, вы можете использовать их в собственных приложениях, если сочтете их удобными.

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

Массивы

Пути

Строки

URL

Прочее

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

Массивы

array_add()

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

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

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

array_collapse()

Функция array_collapse собирает массив массивов в единый массив:

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

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

array_divide()

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

list($keys, $values) = array_divide(['name' => 'Desk']);

// $keys: ['name']

// $values: ['Desk']

array_dot()

Функция array_dot делает многоуровневый массив одноуровневым, объединяя вложенные массивы с помощью точки в именах:

$array = array_dot(['foo' => ['bar' => 'baz']]);

// ['foo.bar' => 'baz'];

array_except()

Функция array_except удаляет указанную пару ключ/значение из массива:

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

$array = array_except($array, ['price']);

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

array_first()

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

$array = [100, 200, 300];

$value = array_first($array, function ($value, $key) {
    return $value >= 150;
});

// 200

Третьим параметром можно передать значение по умолчанию на случай, если ни одно значение не пройдет условие:

$value = array_first($array, $callback, $default);

array_flatten()

Функция array_flatten сделает многоуровневый массив плоским.

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

$array = array_flatten($array);

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

array_forget()

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

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

array_forget($array, 'products.desk');

// ['products' => []]

array_get()

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

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

$value = array_get($array, 'products.desk');

// ['price' => 100]

Также третьим аргументом функции array_get можно передать значение по умолчанию на случай, если указанный ключ не будет найден:

$value = array_get($array, 'names.john', 'default');

array_has()

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

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

$hasItem = array_has($array, 'product.name');

// true

$hasItems = array_has($array, ['product.price', 'product.discount']);

// false

array_last()

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

$array = [100, 200, 300, 110];

$value = array_last($array, function ($value, $key) {
    return $value >= 150;
});

// 300

array_only()

Функция array_only вернет из массива только указанные пары ключ/значения:

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

$array = array_only($array, ['name', 'price']);

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

array_pluck()

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

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

$array = array_pluck($array, 'developer.name');

// ['Taylor', 'Abigail'];

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

$array = array_pluck($array, 'developer.name', 'developer.id');

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

array_prepend()

Функция array_prepend поместит элемент в начало массива:

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

$array = array_prepend($array, 'zero');

// $array: ['zero', 'one', 'two', 'three', 'four']

array_pull()

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

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

$name = array_pull($array, 'name');

// $name: Desk

// $array: ['price' => 100]

array_set()

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

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

array_set($array, 'products.desk.price', 200);

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

array_sort()

Функция array_sort отсортирует массив по результатам вызовов переданной функции-замыкания:

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

$array = array_values(array_sort($array, function ($value) {
    return $value['name'];
}));

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

array_sort_recursive()

Функция array_sort_recursive рекурсивно сортирует массив с помощью функции sort:

$array = [
    [
        'Roman',
        'Taylor',
        'Li',
    ],
    [
        'PHP',
        'Ruby',
        'JavaScript',
    ],
];

$array = array_sort_recursive($array);

/*
    [
        [
            'Li',
            'Roman',
            'Taylor',
        ],
        [
            'JavaScript',
            'PHP',
            'Ruby',
        ]
    ];
*/

array_where()

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

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

$array = array_where($array, function ($value, $key) {
    return is_string($value);
});

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

array_wrap()

Функция array_wrap поместит заданное значение в массив. Если это значение уже в массиве, то функция никак его не изменит:

$string = 'Laravel';

$array = array_wrap($string);

// [0 => 'Laravel']

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 возвращает полный путь к папке настройки приложения:

$path = config_path();

database_path()

Функция database_path возвращает полный путь к папке базы данных приложения:

$path = database_path();

mix()

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

mix($file);

public_path()

Функция public_path возвращает полный путь к папке public:

$path = public_path();

resource_path()

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

$path = resource_path();

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

storage_path()

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

$path = storage_path();

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

Строки

camel_case()

Функция camel_case преобразует строку в camelCase:

$camel = camel_case('foo_bar');

// fooBar

class_basename()

class_basename возвращает имя переданного класса без пространства имен:

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

// Baz

e()

Функция e выполняет функцию PHP htmlspecialchars с опцией double_encode, равной false:

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

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

ends_with()

Функция ends_with определяет заканчивается ли строка переданной подстрокой:

$value = ends_with('This is my name', 'name');

// true

kebab_case()

Функция kebab_case преобразует строку в kebab-case:

$value = kebab_case('fooBar');

// foo-bar

snake_case()

Функция snake_case преобразует строку в snake_case:

$snake = snake_case('fooBar');

// foo_bar

str_limit()

Функция str_limit ограничивает число сиволов в строке. Функция принимает строку первым аргументом, а вторым — максимальное число символов:

$value = str_limit('The PHP framework for web artisans.', 7);

// The PHP...

starts_with()

Функция starts_with определяет начинается ли строка с переданной подстроки:

$value = starts_with('This is my name', 'This');

// true

str_after()

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

$value = str_after('This is: a test', 'This is:');

// ' a test'

str_before()

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

$value = str_before('Test :it before', ':it before');

// 'Test '

str_contains()

Функция str_contains определяет содержит ли строка переданную подстроку:

$value = str_contains('This is my name', 'my');

// true

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

$value = str_contains('This is my name', ['my', 'foo']);

// true

str_finish()

Функция str_finish добавляет одно вхождение подстроки в конец переданной строки, если она уже не заканчивается этим вхождением:

$string = str_finish('this/string', '/');
$string2 = str_finish('this/string/', '/');

// this/string/

str_is()

Функция str_is определяет соответствует ли строка маске. Можно использовать звёздочки (*) как символы подстановки:

$value = str_is('foo*', 'foobar');

// true

$value = str_is('baz*', 'foobar');

// false

str_plural()

Функция str_plural преобразовывает слово-строку во множественное число. На данные момент функция поддерживает только английский язык:

$plural = str_plural('car');

// cars

$plural = str_plural('child');

// children

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

$plural = str_plural('child', 2);

// children

$plural = str_plural('child', 1);

// child

str_random()

Функция str_random создает последовательность случайных символов заданной длины. Эта функция использует PHP-функцию random_bytes:

$string = str_random(40);

str_singular()

Функция str_singular преобразует слово-строку в единственное число. Функция поддерживает только английский язык:

$singular = str_singular('cars');

// car

str_slug()

Функция str_slug генерирует подходящую для URL "заготовку" из переданной строки:

$title = str_slug('Laravel 5 Framework', '-');

// laravel-5-framework

studly_case()

Функция studly_case преобразует строку в StudlyCase:

$value = studly_case('foo_bar');

// FooBar

title_case()

The title_case преобразует строку в Title Case:

$title = title_case('хороший заголовок пишется в правильном регистре');

// Хороший Заголовок Пишется В Правильном Регистре

trans()

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

echo trans('validation.required'):

trans_choice()

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

$value = trans_choice('foo.bar', $count);

URL

action()

Функция action генерирует URL для заданного действия контроллера. Вам не надо передавать полное пространство имён в контроллер. Вместо этого передайте имя класса контроллера в пространстве имён App\Http\Controllers:

$url = action('HomeController@getIndex');

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

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

asset()

Генерирует URL к ресурсу (изображению и пр.) на основе текущей схемы запроса (HTTP или HTTPS):

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

secure_asset()

Генерирует URL для ресурса с использованием HTTPS:

echo secure_asset('foo/bar.zip', $title, $attributes = []);

route()

Функция route генерирует URL для заданного именованного роута:

$url = route('routeName');

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

$url = route('routeName', ['id' => 1]);

По-умолчанию функция route генерирует абсолютный URL-адрес. Если вы хотите сгенерировать относительный URL-адрес, можно передать false в качестве третьего параметра:

$url = route('routeName', ['id' => 1], false);

secure_url()

Функция secure_url генерирует полный HTTPS URL по заданному пути:

echo secure_url('user/profile');

echo secure_url('user/profile', [1]);

url()

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

echo url('user/profile');

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

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

echo url()->current();
echo url()->full();
echo url()->previous();

Прочее

abort()

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

abort(401);

Вы можете передать текст для вывода при ответе с этим исключением:

abort(401, 'Unauthorized.');

abort_if()

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

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

abort_unless()

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

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

auth()

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

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

back()

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

return back();

bcrypt()

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

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

cache()

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

$value = cache('key');

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

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

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

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

collect()

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

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

config()

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

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

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

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

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

csrf_field()

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

{{ csrf_field() }}

csrf_token()

Функция csrf_token позволяет получить текущее значение CSRF-последовательности:

$token = csrf_token();

dd()

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

dd($value);

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

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

dump($value);

dispatch()

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

dispatch(new App\Jobs\SendEmails);

env()

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

$env = env('APP_ENV');

// Return a default value if the variable doesn't exist...
$env = env('APP_ENV', 'production');

event()

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

event(new UserRegistered($user));

factory()

Функция factory создает построитель фабрики моделей для данного класса, имени и количества. Его можно использовать при тестировании или заполнении БД:

$user = factory(App\User::class)->make();

info()

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

info('Некая полезная информация!');

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

info('Неудачная попытка входа пользователя.', ['id' => $user->id]);

logger()

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

logger('Отладочное сообщение');

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

logger('Вход пользователя.', ['id' => $user->id]);

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

logger()->error('Вам сюда нельзя.');

method_field()

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

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

old()

Функция old получает значение "старого" ввода, переданного в сессию:

$value = old('value');

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

redirect()

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

return redirect('/home');

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

report()

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

report($e);

request()

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

$request = request();

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

response()

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

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

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

retry()

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

return retry(5, function () {
    // максимум 5 попыток на выполнение с паузой 100мс между попытками
}, 100);

session()

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

$value = session('key');

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

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

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

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

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

tap()

Функция tap принимает два аргумента: некоторую переменную $value и функцию. Эта переменная передается в функцию-аргумент в виде аргумента. Эта же переменная возвращается какрезультат выполнения хелпера. Возвращаемое значение функции-аргумента игнорируется:

$user = tap(User::first(), function ($user) {
    $user->name = 'taylor';

    $user->save();
});

Если функция-аргумент не передается в хелпер, вы можете вызвать любой метод данного $value. Возвращаемое значение будет всегда $value, несмотря на то, что возвращает этот метод на самом деле. Например, метод Eloquent update() возвращает целое число. Но мы при помощи хелпера tap можем заставить возвращать его собственно модель:

$user = tap($user)->update([
    'name' => $name,
    'email' => $email
]);

value()

Поведение функции value просто вернет данное функции значение. Однако, если передать Closure функции, будет выполнено Closure и возвращен результат:

$value = value(function () {
    return 'bar';
});

view()

Функция view получает экземпляр шаблона:

return view('auth.login');