Введение
Laravel содержит множество глобальных «вспомогательных» PHP-функций. Многие из них используются самим фреймворком, но вы также можете использовать их в своих приложениях, если они вам понадобятся.
Массивы
array_add
Добавить указанную пару ключ/значение в массив, если она там ещё не существует.
$array = array_add(['name' => 'Desk'], 'price', 100);
// ['name' => 'Desk', 'price' => 100]
array_collapse
Функция PHParray_collapse()
(Laravel 5.1+) собирает массив массивов в единый массив:
$array = array_collapse([[1, 2, 3], [4, 5, 6], [7, 8, 9]]);
// [1, 2, 3, 4, 5, 6, 7, 8, 9]
array_divide
Вернуть два массива — один с ключами, другой со значениями оригинального массива.
list($keys, $values) = array_divide(['name' => 'Desk']);
// $keys: ['name']
// $values: ['Desk']
array_dot
Сделать многоуровневый массив плоским, объединяя вложенные массивы с помощью точки в именах.
$array = array_dot(['foo' => ['bar' => 'baz']]);
// ['foo.bar' => 'baz'];
array_except
Удалить указанную пару ключ/значение из массива.
$array = ['name' => 'Desk', 'price' => 100];
$array = array_except($array, ['price']);
// ['name' => 'Desk']
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 = ['name' => 'Joe', 'languages' => ['PHP', 'Ruby']];
$array = array_flatten($array);
// ['Joe', 'PHP', 'Ruby'];
array_forget
Удалить указанную пару ключ/значение из многоуровневого массива, используя синтаксис имени с точкой.
$array = ['products' => ['desk' => ['price' => 100]]];
array_forget($array, 'products.desk');
// ['products' => []]
добавлено в 5.0 ()
array_get
Вернуть значение из многоуровневого массива, используя синтаксис имени с точкой.
$array = ['products' => ['desk' => ['price' => 100]]];
$value = array_get($array, 'products.desk');
// ['price' => 100]
Также третьим аргументом можно передать значение по умолчанию на случай, если указанный ключ не будет найден:
$value = array_get($array, 'names.john', 'default');
Если вам нужно что-то похожее на PHParray_get()
, но только для объектов, используйте PHPobject_get()
.
добавлено в 5.3 () 5.2 () 5.1 ()
array_has
Функция PHParray_has()
проверяет существование данного элемента или элементов в массиве с помощью «точечной» записи:
$array = ['product' => ['name' => 'desk', 'price' => 100]];
$hasItem = array_has($array, 'product.name');
// true
$hasItems = array_has($array, ['product.price', 'product.discount']);
// false
добавлено в 5.0 ()
array_only
Вернуть из массива только указанные пары ключ/значения.
$array = ['name' => 'Desk', 'price' => 100, 'orders' => 10];
$array = array_only($array, ['name', 'price']);
// ['name' => 'Desk', 'price' => 100]
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'];
добавлено в 5.2 ()
array_pull
Извлечь значения из многоуровневого массива, соответствующие переданному ключу, и удалить их.
$array = ['name' => 'Desk', 'price' => 100];
$name = array_pull($array, 'name');
// $name: Desk
// $array: ['price' => 100]
array_set
Установить значение в многоуровневом массиве, используя синтаксис имени с точкой.
$array = ['products' => ['desk' => ['price' => 100]]];
array_set($array, 'products.desk.price', 200);
// ['products' => ['desk' => ['price' => 200]]]
array_sort
Отсортировать массив по результатам вызовов переданной функции-замыкания.
$array = [
['name' => 'Desk'],
['name' => 'Chair'],
];
$array = array_values(array_sort($array, function ($value) {
return $value['name'];
}));
/*
[
['name' => 'Chair'],
['name' => 'Desk'],
]
*/
добавлено в 5.1 ()
array_sort_recursive
Функция PHParray_sort_recursive()
рекурсивно сортирует массив с помощью функции PHPsort()
:
$array = [
[
'Roman',
'Taylor',
'Li',
],
[
'PHP',
'Ruby',
'JavaScript',
],
];
$array = array_sort_recursive($array);
/*
[
[
'Li',
'Roman',
'Taylor',
],
[
'JavaScript',
'PHP',
'Ruby',
]
];
*/
array_where
Фильтровать массив с помощью переданной функции-замыкания.
$array = [100, '200', 300, '400', 500];
$array = array_where($array, function ($value, $key) {
return is_string($value);
});
// [1 => 200, 3 => 400]
head
Вернуть первый элемент массива.
$array = [100, 200, 300];
$first = head($array);
// 100
last
Вернуть последний элемент массива.
$array = [100, 200, 300];
$last = last($array);
// 300
Пути
app_path
Получить полный путь к папке app. Также вы можете использовать функцию PHPapp_path()
для получения полного пути к указанному файлу относительно каталога приложения:
$path = app_path();
$path = app_path('Http/Controllers/Controller.php');
base_path
Получить полный путь к корневой папке приложения. Также вы можете использовать функцию PHPbase_path()
для получения полного пути к указанному файлу относительно корня проекта:
$path = base_path();
$path = base_path('vendor/bin');
config_path
Получить полный путь к папке config:
$path = config_path();
добавлено в 5.1 ()
elixir
Функция PHPelixir()
получает путь к файлу Elixir в системе контроля версий:
elixir($file);
public_path
Получить полный путь к папке public:
$path = public_path();
storage_path
Получить полный путь к папке storage. Также вы можете использовать функцию PHPstorage_path()
для получения полного пути к указанному файлу относительно каталога storage:
$path = storage_path();
$path = storage_path('app/file.txt');
добавлено в 5.0 ()
Маршруты
get
Зарегистрировать новый маршрут GET.
get('/', function() { return 'Hello World'; });
post
Зарегистрировать новый маршрут POST.
post('foo/bar', 'FooController@action');
put
Зарегистрировать новый маршрут PUT.
put('foo/bar', 'FooController@action');
patch
Зарегистрировать новый маршрут PATCH.
patch('foo/bar', 'FooController@action');
delete
Зарегистрировать новый маршрут DELETE.
delete('foo/bar', 'FooController@action');
resource
Зарегистрировать новый маршрут ресурса RESTful.
resource('foo', 'FooController');
Строки
camel_case
Преобразовать строку в camelCase.
$camel = camel_case('foo_bar');
// fooBar
class_basename
Получить имя переданного класса без пространства имён.
$class = class_basename('Foo\Bar\Baz');
// Baz
e
Выполнить над строкой htmlspecialchars (для 5.2 и ранее: htmlentities ).
echo e('<html>foo</html>');
// <html>foo</html>
ends_with
Определить, заканчивается ли строка переданной подстрокой.
$value = ends_with('This is my name', 'name');
// true
snake_case
Преобразовать строку в snake_case (стиль именования Си с подчёркиваниями вместо пробелов — прим. пер.).
$snake = snake_case('fooBar');
// foo_bar
str_limit
Ограничить число символов в строке. Функция принимает строку первым аргументом, а вторым — максимальное число символов:
$value = str_limit('The PHP framework for web artisans.', 7);
// The PHP...
starts_with
Определить, начинается ли строка с переданной подстроки.
$value = starts_with('This is my name', 'This');
// true
str_contains
Определить, содержит ли строка переданную подстроку.
$value = str_contains('This is my name', 'my');
// true
добавлено в 5.3 ()
str_finish
Добавить одно вхождение подстроки в конец переданной строки.
$string = str_finish('this/string', '/');
// this/string/
str_is
Определить, соответствует ли строка маске. Можно использовать звёздочки (*) как символы подстановки.
$value = str_is('foo*', 'foobar');
// true
$value = str_is('baz*', 'foobar');
// false
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
Создать последовательность случайных символов заданной длины. Эта функция использует PHP-функцию PHPrandom_bytes()
:
$string = str_random(40);
str_singular
Преобразовать слово-строку в единственное число (только для английского).
$singular = str_singular('cars');
// car
str_slug
Сгенерировать подходящую для URL «заготовку» из переданной строки.
$title = str_slug('Laravel 5 Framework', '-');
// laravel-5-framework
studly_case
Преобразовать строку в StudlyCase.
$value = studly_case('foo_bar');
// FooBar
добавлено в 5.3 ()
trans
Перевести переданную языковую строку с помощью ваших языковых файлов:
echo trans('validation.required'):
trans_choice
Перевести переданную языковую строку с изменениями:
$value = trans_choice('foo.bar', $count);
URL-адреса
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
Сгенерировать HTML-ссылку на ресурс (изображение и пр.) через HTTPS:
echo secure_asset('foo/bar.zip', $title, $attributes = []);
route
Сгенерировать URL для заданного именованного маршрута.
$url = route('routeName');
Если маршрут принимает параметры, вы можете передать их вторым аргументом:
$url = route('routeName', ['id' => 1]);
url
Сгенерировать HTML-ссылку на указанный полный путь.
echo url('user/profile');
echo url('user/profile', [1]);
добавлено в 5.2 ()
Прочее
добавлено в 5.3 ()
abort
Выбросить HTTP-исключение, которое будет отображено обработчиком исключений:
abort(401);
Вы можете передать текст для вывода при ответе с этим исключением:
abort(401, 'Unauthorized.');
abort_if
Выбросить HTTP-исключение, если заданное логическое выражение равно PHPtrue
:
abort_if(! Auth::user()->isAdmin(), 403);
abort_unless
Выбросить HTTP-исключение, если заданное логическое выражение равно PHPfalse
:
abort_unless(Auth::user()->isAdmin(), 403);
добавлено в 5.3 () 5.2 () 5.1 ()
auth
Функция PHPauth()
возвращает экземпляр аутентификатора. Вы можете использовать её вместо фасада Auth для удобства:
$user = auth()->user();
back
Функция PHPback()
создаёт отклик-переадресацию на предыдущую страницу:
return back();
bcrypt
Функция PHPbcrypt()
хеширует переданное значение с помощью Bcrypt. Вы можете использовать её вместо фасада Hash:
$password = bcrypt('my-secret-password');
collect
Функция PHPcollect()
создаёт экземпляр коллекции из переданного массива:
$collection = collect(['taylor', 'abigail']);
config
Функция PHPconfig()
получает значение переменной из конфигурации. К значениям конфигурации можно обращаться с помощью «точечного» синтаксиса, в котором указывается имя файла и необходимый параметр. Можно указать значение по умолчанию, которое будет возвращено, если параметра не существует:
$value = config('app.timezone');
$value = config('app.timezone', $default);
Функцию PHPconfig()
можно использовать для задания переменных конфигурации во время выполнения, передав массив пар ключ/значение:
config(['app.debug' => true]);
csrf_field
Функция PHPcsrf_field()
создаёт скрытое поле ввода HTML, содержащее значение CSRF-последовательности. Например, используя синтаксис Blade:
{{ csrf_field() }}
// для 5.1 и ранее:
// {!! csrf_field() !!}
добавлено в 5.3 ()
cache
Получить значение из кэша. Если в кэше нет заданного ключа, будет возвращено необязательное значение по умолчанию:
$value = cache('key');
$value = cache('key', 'default');
Вы можете добавить элементы в кэш, передав массив пар ключ/значение. Также вам надо передать количество минут или время, в течение которого кэшированные значения будут считаться действительными:
cache(['key' => 'value'], 5);
cache(['key' => 'value'], Carbon::now()->addSeconds(10));
csrf_token
Получить текущее значение CSRF-последовательности.
$token = csrf_token();
dd
Вывести дамп переменных и завершить выполнение скрипта.
dd($value);
dd($value1, $value2, $value3, ...);
добавлено в 5.2 ()
Если вы не хотите останавливать выполнение скрипта, используйте функцию PHPdump()
:
dump($value);
dispatch
Поместить новую задачу в очередь задач Laravel:
dispatch(new App\Jobs\SendEmails);
env
Получить значение переменной среды или вернуть значение по умолчанию.
$env = env('APP_ENV');
// Возврат значения по умолчанию, если переменная не существует...
$env = env('APP_ENV', 'production');
event
Отправить указанное событие его слушателям:
event(new UserRegistered($user));
добавлено в 5.3 ()
info
info('Некая полезная информация!');
В функцию можно передать массив контекстных данных:
info('Неудачная попытка входа пользователя.', ['id' => $user->id]);
logger
Записать в журнал сообщение уровня «debug»:
logger('Отладочное сообщение');
В функцию можно передать массив контекстных данных:
logger('Вход пользователя.', ['id' => $user->id]);
Если в функцию не переданы значения, будет возвращён экземпляр логгера:
logger()->error('Вам сюда нельзя.');
добавлено в 5.3 () 5.2 () 5.1 ()
factory
Функция PHPfactory()
создаёт построитель фабрики моделей для данного класса, имени и количества. Его можно использовать при тестировании или заполнении БД:
$user = factory(App\User::class)->make();
method_field
Функция PHPmethod_field()
создаёт скрытое поле ввода HTML, содержащее подменённое значение HTTP-типа формы. Например, используя синтаксис Blade:
<form method="POST">
{{ method_field('DELETE') }}
// для 5.1 и ранее:
// {!! method_field('delete') !!}
</form>
old
Функция PHPold()
получает значение «старого» ввода, переданного в сессию:
$value = old('value');
$value = old('value', 'default');
redirect
Функция PHPredirect()
возвращает HTTP-отклик переадресации, или экземпляр переадресатора, если вызывается без аргументов:
return redirect('/home');
return redirect()->route('route.name');
request
Функция PHPrequest()
возвращает экземпляр текущего запроса или получает элемент ввода:
$request = request();
$value = request('key', $default = null)
response
Функция PHPresponse()
создаёт экземпляр отклика или получает экземпляр фабрики откликов:
return response('Hello World', 200, $headers);
return response()->json(['foo' => 'bar'], 200, $headers);
session
Функция PHPsession()
используется для получения или задания значений сессии:
$value = session('key');
Вы можете задать значения, передав массив пар ключ/значение в функцию:
session(['chairs' => 7, 'instruments' => 3]);
Если в функцию не было передано значение, то она вернёт значения сессии:
$value = session()->get('key');
session()->put('key', $value);
value
Если переданное значение — функция-замыкание, то вызвать её и вернуть результат. В противном случае вернуть само значение.
$value = value(function () {
return 'bar';
});
view
Получить экземпляр представления:
return view('auth.login');