В основе фреймворка Laravel как и во многих других заложена концепция MVC. Основные операции обработки запросов происходят в классах-контроллерах (если брать классическое приложение на Laravel). Класс-контроллер в свою очередь содержит набор методов (функций). Часто некоторые функции требуется использовать в разных участках кода, за пределами одного контроллера. Для этого было бы удобно создать отдельный файлик с общими функциями, который всегда бы подключался при выполнении приложения и функции были бы доступны при вызове.
В Laravel конечно же есть такое решение и называется среди разработчиков хелперами (helper). Есть хелперы, встроенные в сам Laravel, там собраны довольно востребованные функции для выполнения различных операций с данными. Конечно же вы можете создать свои хелперы, с нужными вам функциями. Сделать это просто, давайте попробуем.
Первое что нужно сделать – создать файл хелпер, который будет хранить все нужные нам функции. Для этого удобно создать отдельную папку app/Helpers в который разместим файл helper.php.
Добавим простую функцию, которая будет выдавать строку «it’s work», чтобы понять что вызов функции работает.
function myBestHelper(){ return "It’s work!"; }
Хелперами могут быть как отдельные функции, так и целые классы. При использовании классов нужно будет в начале так же объявить пространство имён:
namespace App\Helpers;
Важно понимать, если в Laravel уже объявлены функции с аналогичными именами, будут ошибки. Поэтому вы можете дополнительно делать проверку наличия с помощью php-функции function_exists.
if (!function_exists('myBestHelper')) { function myBestHelper() { // ... } }
После того как файл хелпера создан, нам нужно как-то заставить его загружаться вместе с приложением. Для этого в корне проекта находим файл composer.json и добавляем путь в автозагрузку скрипта.
"autoload": { "files": [ "app/Helpers/helpers.php" ], "classmap": [ "database/seeds", "database/factories" ], },
Далее в терминале выполняем команду:
composer dump-autoload
Выполним эту команду, прописанные нами пути будут выгружены в автозагрузчик приложения на Laravel. Этот способ наиболее простой, но не единственный.
Загружать свои хелперы можно так же через Service Provider. Это более мощный механизм, который может быть использован и для этих целей в том числе. Давайте создадим новый сервис-провайдер командой в терминале:
php artisan make:provider HelpersLoaderProvider
Видим сообщение что всё прошло хорошо:
Provider created successfully
В папке app/Providers будет создан новый файл, в методе register этого класса нужно написать код для подключения файла-хелпера.
public function register() { $file = app_path('Helpers/helpers.php'); if (file_exists($file)) { require_once($file); } }
Далее регистрируем сервис-провайдер в файле config/app.php, в массив с ключом «providers» добавляем строку:
App\Providers\HelpersLoaderProvider::class,
Либо если вы решили сделать это посредством использования пространства имён для класса, то можно подключить и таким образом:
'Helper' => App\Helpers\Helper::class,
Как вы можете заметить всё очень просто и удобно. Как правило одного из указанных способов бывает вполне достаточно для одного проекта. На этом пока всё, удачи вам!