О web-разработке
и даже немного больше...

Создание своего «хелпера» в Laravel

В основе фреймворка 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 для загрузки хелпера.

Загружать свои хелперы можно так же через 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,

Как вы можете заметить всё очень просто и удобно. Как правило одного из указанных способов бывает вполне достаточно для одного проекта. На этом пока всё, удачи вам!

Опубликован: 18.06.2022 г.

См. также:

Как просмотреть SQL запрос в Eloquent Laravel?
Как объявить переменную в шаблоне Laravel Blade?
Проверка на пустоту коллекций Eloquent в Laravel
Как получить URL текущей страницы в Laravel?
Как вывести роуты Laravel в отдельный файл?
Как получить случайные записи из БД в Laravel?
Ограничение выборки (LIMIT) данных в Laravel
Как перенести Laravel на боевой сервер?

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *

Комментарии
  • Загрузка...
Друзья сайта