10 лучших Laravel хелперов для упрощения жизни
            Laravel включает в себя множество вспомогательных функций-хелперов. Существует множество хелперов, включенных в laravel из коробки, которые вы можете использовать, чтобы упростить и сукорить процесс разработки на фреймворке. В этой статье я расскажу о 10 лучших хелперах в Laravel, которые я постоянно использую, чтобы облегчить мою разработку. Ранее я уже создавал статью, где рассказывал о 5 полезных в работе хелперах. Эта статья дополняет предыдущую новыми функциями и примерами.
Для того, чтобы просмотреть весь список из доступных хелперов, можете открыть страницу документации. Или же, если вам требуется создать свои собственные хелперы, то в этой статье показан пример того, как это сделать в лучшем виде.
В этой статье я расскажу о списке таких хелперов:
- array_dot()
 - array_get()
 - public_path()
 - Str::orderedUuid()
 - Str::plural()
 - route()
 - tap()
 - dump()
 - Str::slug()
 - optional()
 
array_dot()
Хелпер array_dot() позволяет преобразовывать многомерный массив в одномерный, который использует точечную запись представления вложенностей.
$data = [
    'user' => ['username' => 'truehero'],
    'app' => ['admin' => ['name' => 'truehero'], 'created' => 'now']
];
 
$dot_array = array_dot($array);
// [user.username] => truehero, [app.admin.name] => truehero, [app.created] => now
array_get()
Хелпер array_get() извлекает значение из многомерного массива, используя точечные аннотации.
$data = [
    'user' => ['username' => 'truehero'],
    'app' => ['admin' => ['name' => 'truehero'], 'created' => 'now']
];
 
$username = array_get($data, 'app.admin.name'); // truehero
Этот хелпер также принимает необязательный третий параметр, который будет использоваться в качестве значения по умолчанию, если данные по указанному ключе не были найдены.
$data = [
    'user' => ['username' => 'truehero'],
    'app' => ['admin' => ['name' => 'truehero'], 'created' => 'now']
];
 
$username = array_get($data, 'app.undefined.name', 'anonym'); // anonym
public_path()
Хелпер public_path() возвращает полный абсолютный путь к директории public вашего приложения Laravel. Вы также можете передать аргументом функции путь к файлу или каталогу в директории public, чтобы получить абсолютный путь к этому ресурсу. Он просто добавит public_path() к вашему аргументу.
$public_path = public_path(); // /var/www/public
 
$path = public_path('js/app.js'); // /var/www/public/js/app.js
Str::orderedUuid()
Хелпер Str::orderedUuid() использует библиотеку, которая помогает генерировать уникальные идентификаторы. Метод Str::orderedUuid() генерирует уникальное значение на основе временной метки timestamp, потому, эти значения можно использовать как уникальные идентификаторы в базе данных. При использовании этой библиотеки в Laravel 5.6 и выше, всплывает исключение Ramsey\Uuid\Exception\UnsatisfiedDependencyException. Чтобы это пофиксить, просто установить ещё один дополнительный пакет moontoast/math, выполнив следующую команду: 
composer require "moontoast/math"
После чего, можете безпрепятственно пользоваться этим хелпером.
use Illuminate\Support\Str;
 
return (string) Str::orderByUuid() // 8e57e8af-d9bd-44f0-a766-b3e7c7885a61
Str::plural()
Хелпер Str::plural() конвертирует строку в её множественную форму. Эта функция поддерживается только для английского языка.
use Illuminate\Support\Str;
echo Str::plural('user', 1); // user
echo Str::plural('user', 2); // users
Но, для того, чтобы добавить возможность работы с русскими словами, можете добавить собственный хелпер, как было описано в этой статье, например так:
if(!function_exists('str_plural_ru')) 
{
    function str_plural_ru($n, $forms) {
        return $n%10==1&&$n%100!=11?$forms[0]:($n%10>=2&&$n%10<=4&&($n%100<10||$n%100>=20)?$forms[1]:$forms[2]);
    }
}
// использование
echo str_plural_ru(1, ['яблоко', 'яблока', 'яблок']); // яблоко
echo str_plural_ru(2, ['яблоко', 'яблока', 'яблок']); // яблока
echo str_plural_ru(100, ['яблоко', 'яблока', 'яблок']); // яблок
route()
Хелпер route() генерирует URL-адрес по имени маршрута.
$url = route('register');
echo $url;
// или в представлении
<a href="{{ route('login') }}">Login</a>
Если для указанного маршрута нужно передать параметры, вы можете указать их в виде массива в качестве второго аргумента.
$url = route('projects.show', ['id' => 1]);
// или просто, если требуется только один параметр
$url = route('projects.show', 1);
Если вы хотите сгенерировать относительный URL, а не абсолютный, то можете передать false в качестве третьего аргумента.
$url = route('projects.show', ['id' => 1]);
tap()
Хелпер tap() принимает два аргумента: значение и анонимную функцию. Этот хелпер передаёт значение из первого аргумента в анонимную функцию, а затем будет возвращено этот же значение из первого аргумента. Возвращаемое значение анонимной функции не имеет значения, потому что всегда будет возвращён первый аргумент функции.
$user = App\User::find(1);
$user = tap($user, function($user) {
    $user->update([
        'api_token' => str_random()
    ]);
});
Преимущество использования функции tap - вместо того, чтобы возвращать булево значение после вызова $user->update(), она вернёт модель пользователя $user.
Если вы не передаете анонимную функцию, то это функцию можете использовать для построения цепи вызовов свойств/методов. Возвращаемое значение всегда будет значением из первого аргумента, независимо от того, что вызываемые методы возвращают на самом деле. В приведённом ниже примере он вернет модель пользователя вместо булевого значения. Метод update() возвращает белево значение, но благодаря хелперу touch() при вызове определённого метода будет возвращена модель пользователя.
$user = tap($user)->update(['api_token' => 'hardcoded']);
dump()
Хелпер dump() выводит на экран информацию о переданном значении без остановки работы скрипта (в отличии от хелпера dd(), которые обрывает работу скрипта).
dump($var1);
dump($var1, $var2, $var3);
Str::slug()
Хелпер Str::slug() генерирует ЧПУ URL-адрес из переданной строки. Эту функцию вы можете использовать для создания ЧПУ-ссылки для поста, или продукта по его заголовку.
$slug = Str::slug('Blog post about laravel helpers', '-'); //blog-post-about-laravel-helpers
optional()
Хелпер optional принимает в качестве аргумента какое-то значение, у которого вы можете вызвать его методы и свойства. Но, если в качестве аргумента был передан null, вызов его методов вернёт null вместо срабатывания ошибок или выбрасывания исключений.
$user = \App\User::find(100500);
$name = optional($user)->name; // null