{{TOC}} {{DOCVER 5.2=6b0b057ae6de3c88cb29188459e38383c622ec23 8.12.2016 23:00:15, 5.1=cdc24ba7426c5b11eb4d050706bd78c3ea4913cc 19.06.2016 20:08:01, 5.0=f6e862ba51a97f2bf9865f35fd5c522c14af93a1 31.07.2015 15:36:24}} == Введение == Laravel содержит множество глобальных "вспомогательных" PHP-функций. Многие из них используются самим фреймворком, но вы также можете использовать их в своих приложениях, если они вам понадобятся. == Массивы == === array_add === Добавить указанную пару ключ/значение в массив, если она там ещё не существует. %% $array = array_add(['name' => 'Desk'], 'price', 100); // ['name' => 'Desk', 'price' => 100] %% === array_collapse === Функция %%array_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' => []] %% %%(DOCNEW 5.0=5d10040a981deee82c0fde0e8e5d2ffc49eaaecb 8.02.2016 18:09:11) === array_fetch === Функция %%array_fetch()%% возвращает одноуровневый массив с выбранными элементами по переданному пути. ~%% $array = [ ['developer' => ['name' => 'Taylor']], ['developer' => ['name' => 'Dayle']] ]; $array = array_fetch($array, 'developer.name'); // ['Taylor', 'Dayle']; ~%% %% === array_get === Вернуть значение из многоуровневого массива, используя синтаксис имени с точкой. %% $array = ['products' => ['desk' => ['price' => 100]]]; $value = array_get($array, 'products.desk'); // ['price' => 100] %% Также третьим аргументом можно передать значение по умолчанию на случай, если указанный ключ не будет найден: %% $value = array_get($array, 'names.john', 'default'); %% .(alert) Если вам нужно что-то похожее на %%array_get()%%, но только для объектов, используйте %%object_get()%%. %%(DOCNEW 5.3=c06d6a2352ed8c767633aab9c20f2bf7d880c967 28.01.2017 5:00:51, 5.2=6b0b057ae6de3c88cb29188459e38383c622ec23 8.12.2016 23:00:15, 5.1=f60f8b3697b3ffe381df4ddb7e2875ffce940643 1.04.2016 17:39:10) === 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 ~%% %% %%(DOCNEW 5.3=c06d6a2352ed8c767633aab9c20f2bf7d880c967 28.01.2017 5:00:51, 5.0=5d10040a981deee82c0fde0e8e5d2ffc49eaaecb 8.02.2016 18:09:11) === array_last === Функция %%array_last()%% возвращает последний элемент массива, удовлетворяющий требуемому условию: ~%% $array = [100, 200, 300, 110]; $value = array_last($array, function ($value, $key) { return $value >= 150; }); // 300 ~%% %% %%(DOCNEW 5.0=5d10040a981deee82c0fde0e8e5d2ffc49eaaecb 8.02.2016 18:09:11) Третьим параметром можно передать значение по умолчанию: ~%% $value = array_last($array, $callback, $default); ~%% %% === 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']; %% %%(DOCNEW 5.2=6b0b057ae6de3c88cb29188459e38383c622ec23 8.12.2016 23:00:15) === array_prepend === Поместить элемент в начало массива: ~%% $array = ['one', 'two', 'three', 'four']; $array = array_prepend($array, 'zero'); // $array: ['zero', 'one', 'two', 'three', 'four'] ~%% %% === 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'], ] */ %% %%(DOCNEW 5.1=f60f8b3697b3ffe381df4ddb7e2875ffce940643 1.04.2016 17:39:10) === 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 = [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 === Получить полный путь к папке %%(t)app%%. Также вы можете использовать функцию %%app_path()%% для получения полного пути к указанному файлу относительно каталога приложения: %% $path = app_path(); $path = app_path('Http/Controllers/Controller.php'); %% === base_path === Получить полный путь к корневой папке приложения. Также вы можете использовать функцию %%base_path()%% для получения полного пути к указанному файлу относительно корня проекта: %% $path = base_path(); $path = base_path('vendor/bin'); %% === config_path === Получить полный путь к папке %%(t)config%%: %% $path = config_path(); %% %%(DOCNEW 5.1=f60f8b3697b3ffe381df4ddb7e2875ffce940643 1.04.2016 17:39:10) === database_path === Функция %%database_path()%% возвращает полный путь к папке базы данных приложения: ~%% $path = database_path(); ~%% %% === elixir === Функция %%elixir()%% получает путь к файлу ((/docs/v5/elixir Elixir)) в системе контроля версий: %% elixir($file); %% === public_path === Получить полный путь к папке %%(t)public%%: %% $path = public_path(); %% %%(DOCNEW 5.3=c06d6a2352ed8c767633aab9c20f2bf7d880c967 28.01.2017 5:00:51, 5.2=6b0b057ae6de3c88cb29188459e38383c622ec23 8.12.2016 23:00:15) === resource_path === Получить полный путь к папке %%(t)resources%%. Эту функцию можно использовать, чтобы сгенерировать полный путь к файлу относительно папки хранилища: ~%% $path = resource_path(); $path = resource_path('assets/sass/app.scss'); ~%% %% === storage_path === Получить полный путь к папке %%(t)storage%%. Также вы можете использовать функцию %%storage_path()%% для получения полного пути к указанному файлу относительно каталога %%(t)storage%%: %% $path = storage_path(); $path = storage_path('app/file.txt'); %% %%(DOCNEW 5.0=5d10040a981deee82c0fde0e8e5d2ffc49eaaecb 8.02.2016 18:09:11) == Маршруты == === 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 === Преобразовать строку в %%(t)camelCase%%. %% $camel = camel_case('foo_bar'); // fooBar %% === class_basename === Получить имя переданного класса без пространства имён. %% $class = class_basename('Foo\Bar\Baz'); // Baz %% === e === Выполнить над строкой ((php:htmlspecialchars)) (для 5.2 и ранее: ((php:htmlentities)) ). %% echo e('foo'); // <html>foo</html> %% === ends_with === Определить, заканчивается ли строка переданной подстрокой. %% $value = ends_with('This is my name', 'name'); // true %% === snake_case === Преобразовать строку в %%(t)snake_case%% (!!(tl_note)стиль именования Си с подчёркиваниями вместо пробелов - //прим. пер.//!!). %% $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 %% %%(DOCNEW 5.3=c06d6a2352ed8c767633aab9c20f2bf7d880c967 28.01.2017 5:00:51) Также вы можете передать массив значений, чтобы определить, содержит ли строка любое из них: ~%% $value = str_contains('This is my name', ['my', 'foo']); // true ~%% %% === str_finish === Добавить одно вхождение подстроки в конец переданной строки. %% $string = str_finish('this/string', '/'); // this/string/ %% === str_is === Определить, соответствует ли строка маске. Можно использовать звёздочки (%%(t)*%%) как символы подстановки. %% $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-функцию %%random_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 === Преобразовать строку в %%(t)StudlyCase%%. %% $value = studly_case('foo_bar'); // FooBar %% %%(DOCNEW 5.3=c06d6a2352ed8c767633aab9c20f2bf7d880c967 28.01.2017 5:00:51) === title_case === Конвертировать строку в стиль заголовка "Title Case": ~%% $title = title_case('хороший заголовок пишется правильно'); // Хороший Заголовок Пишется Правильно ~%% %% === trans === Перевести переданную языковую строку с помощью ваших ((/docs/v5/localization языковых файлов)): %% echo trans('validation.required'): %% === trans_choice === Перевести переданную языковую строку с изменениями: %% $value = trans_choice('foo.bar', $count); %% == URL-адреса == === action === Сгенерировать URL для заданного действия ((docs/v5/controllers контроллера)). Вам не надо передавать полное пространство имён в контроллер. Вместо этого передайте имя класса контроллера в пространстве имён %%(t)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 для заданного именованного ((docs/v5/routing маршрута)). %% $url = route('routeName'); %% Если маршрут принимает параметры, вы можете передать их вторым аргументом: %% $url = route('routeName', ['id' => 1]); %% %%(DOCNEW 5.3=c06d6a2352ed8c767633aab9c20f2bf7d880c967 28.01.2017 5:00:51, 5.0=5d10040a981deee82c0fde0e8e5d2ffc49eaaecb 8.02.2016 18:09:11) === secure_url === Генерирует полный HTTPS URL по заданному пути: ~%% echo secure_url('user/profile'); echo secure_url('user/profile', [1]); ~%% %% === url === Сгенерировать HTML-ссылку на указанный полный путь. %% echo url('user/profile'); echo url('user/profile', [1]); %% %%(DOCNEW 5.2=6b0b057ae6de3c88cb29188459e38383c622ec23 8.12.2016 23:00:15) Если путь не указан, вернётся экземпляр %%(t)Illuminate\Routing\UrlGenerator%%: ~%% echo url()->current(); echo url()->full(); echo url()->previous(); ~%% %% == Прочее == %%(DOCNEW 5.3=c06d6a2352ed8c767633aab9c20f2bf7d880c967 28.01.2017 5:00:51) === abort === Выбросить HTTP-исключение, которое будет отображено обработчиком исключений: ~%% abort(401); ~%% Вы можете передать текст для вывода при ответе с этим исключением: ~%% abort(401, 'Unauthorized.'); ~%% === abort_if === Выбросить HTTP-исключение, если заданное логическое выражение равно %%true%%: ~%% abort_if(! Auth::user()->isAdmin(), 403); ~%% === abort_unless === Выбросить HTTP-исключение, если заданное логическое выражение равно %%false%%: ~%% abort_unless(Auth::user()->isAdmin(), 403); ~%% %% %%(DOCNEW 5.3=c06d6a2352ed8c767633aab9c20f2bf7d880c967 28.01.2017 5:00:51, 5.2=6b0b057ae6de3c88cb29188459e38383c622ec23 8.12.2016 23:00:15, 5.1=f60f8b3697b3ffe381df4ddb7e2875ffce940643 1.04.2016 17:39:10) === auth === Функция %%auth()%% возвращает экземпляр аутентификатора. Вы можете использовать её вместо фасада %%(t)Auth%% для удобства: ~%% $user = auth()->user(); ~%% === back === Функция %%back()%% создаёт отклик-переадресацию на предыдущую страницу: ~%% return back(); ~%% === bcrypt === Функция %%bcrypt()%% хеширует переданное значение с помощью Bcrypt. Вы можете использовать её вместо фасада %%(t)Hash%%: ~%% $password = bcrypt('my-secret-password'); ~%% === collect === Функция %%collect()%% создаёт экземпляр ((/docs/v5/collections коллекции)) из переданного массива: ~%% $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, содержащее значение CSRF-последовательности. Например, используя ((/docs/v5/blade синтаксис Blade)): ~%% {{ csrf_field() }} // для 5.1 и ранее: // {!! csrf_field() !!} ~%% %% %%(DOCNEW 5.3=c06d6a2352ed8c767633aab9c20f2bf7d880c967 28.01.2017 5:00:51) === 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, ...); %% %%(DOCNEW 5.2=6b0b057ae6de3c88cb29188459e38383c622ec23 8.12.2016 23:00:15) Если вы не хотите останавливать выполнение скрипта, используйте функцию %%dump()%%: ~%% dump($value); ~%% === dispatch === Поместить новую задачу в ((/docs/v5/queues очередь задач)) Laravel: ~%% dispatch(new App\Jobs\SendEmails); ~%% %% === env === Получить значение переменной среды или вернуть значение по умолчанию. %% $env = env('APP_ENV'); // Возврат значения по умолчанию, если переменная не существует... $env = env('APP_ENV', 'production'); %% === event === Отправить указанное ((/docs/v5/events событие)) его слушателям: %% event(new UserRegistered($user)); %% %%(DOCNEW 5.3=c06d6a2352ed8c767633aab9c20f2bf7d880c967 28.01.2017 5:00:51) === info === Записать информацию в журнал: ~%% info('Некая полезная информация!'); ~%% В функцию можно передать массив контекстных данных: ~%% info('Неудачная попытка входа пользователя.', ['id' => $user->id]); ~%% === logger === Записать в журнал сообщение уровня "debug": ~%% logger('Отладочное сообщение'); ~%% В функцию можно передать массив контекстных данных: ~%% logger('Вход пользователя.', ['id' => $user->id]); ~%% Если в функцию не переданы значения, будет возвращён экземпляр ((//docs/v5/errors#журналы логгера)): ~%% logger()->error('Вам сюда нельзя.'); ~%% %% %%(DOCNEW 5.3=c06d6a2352ed8c767633aab9c20f2bf7d880c967 28.01.2017 5:00:51, 5.2=6b0b057ae6de3c88cb29188459e38383c622ec23 8.12.2016 23:00:15, 5.1=f60f8b3697b3ffe381df4ddb7e2875ffce940643 1.04.2016 17:39:10) === factory === Функция %%factory()%% создаёт построитель фабрики моделей для данного класса, имени и количества. Его можно использовать при ((/docs/v5/database-testing тестировании)) или ((/docs/v5/seeding заполнении БД)): ~%% $user = factory(App\User::class)->make(); ~%% === method_field === Функция %%method_field()%% создаёт скрытое поле ввода HTML, содержащее подменённое значение HTTP-типа формы. Например, используя ((/docs/v5/blade синтаксис Blade)): ~%%
~%% === old === Функция %%old()%% ((/docs/v5/requests#получение_ввода получает)) значение "старого" ввода, переданного в сессию: ~%% $value = old('value'); $value = old('value', 'default'); ~%% === redirect === Функция %%redirect()%% возвращает HTTP-отклик переадресации, или экземпляр переадресатора, если вызывается без аргументов: ~%% return redirect('/home'); return redirect()->route('route.name'); ~%% === request === Функция %%request()%% возвращает экземпляр текущего ((/docs/v5/requests запроса)) или получает элемент ввода: ~%% $request = request(); $value = request('key', $default = null) ~%% === response === Функция %%response()%% создаёт экземпляр ((/docs/v5/responses отклика)) или получает экземпляр фабрики откликов: ~%% return response('Hello World', 200, $headers); return response()->json(['foo' => 'bar'], 200, $headers); ~%% === session === Функция %%session()%% используется для получения или задания значений сессии: ~%% $value = session('key'); ~%% Вы можете задать значения, передав массив пар ключ/значение в функцию: ~%% session(['chairs' => 7, 'instruments' => 3]); ~%% Если в функцию не было передано значение, то она вернёт значения сессии: ~%% $value = session()->get('key'); session()->put('key', $value); ~%% %% === value === Если переданное значение - функция-замыкание, то вызвать её и вернуть результат. В противном случае вернуть само значение. %% $value = value(function () { return 'bar'; }); %% === view === Получить экземпляр ((/docs/v5/views представления)): %% return view('auth.login'); %% %%(DOCNEW 5.2=6b0b057ae6de3c88cb29188459e38383c622ec23 8.12.2016 23:00:15, 5.1=cdc24ba7426c5b11eb4d050706bd78c3ea4913cc 19.06.2016 20:08:01, 5.0=5d10040a981deee82c0fde0e8e5d2ffc49eaaecb 8.02.2016 18:09:11) === with === Вернуть переданный объект. Эта функция в основном полезна для сцепки методов, где без неё не обойтись: ~%% $value = with(new Foo)->work(); ~%% %%