Я прочитал много вопросов о том, как сделать вспомогательные методы на Laravel 5.1. Но я не хочу этого добиваться в Фасад
HelperClass::methodName();
Я хочу, чтобы методы Помощника были как в методах Laravel Helper, например:
myCustomMethod();
Я не хочу превращать его в Фасад. Это возможно? Как? Благодарю.
Если вы хотите перейти к «Laravel way», вы можете создать файл helpers.php
с помощью специальных помощников:
if (! function_exists('myCustomHelper')) { function myCustomHelper() { return 'Hey, it\'s working!'; } }
Затем поместите этот файл в какой-то каталог, добавьте этот каталог в раздел автозагрузки в файле composer.json
приложения:
"autoload": { .... "files": [ "app/someFolder/helpers.php" ] },
Запустите команду composer dumpauto
и ваши помощники будут работать через все приложения, такие как Laravel.
Если вы хотите больше примеров, посмотрите на оригинальных помощников Laravel по адресу /vendor/laravel/framework/Illuminate/Support/helpers.php
Для начала я создал папку в моем каталоге приложений под названием Helpers
. Затем в папке «Помощники» я добавил файлы для функций, которые я хотел добавить. Наличие папки с несколькими файлами позволяет избежать того, что один большой файл становится слишком длинным и неуправляемым.
Затем я создал HelperServiceProvider.php
, выполнив команду artisan:
artisan make:provider HelperServiceProvider
В методе регистрации я добавил этот фрагмент
public function register() { foreach (glob(app_path().'/Helpers/*.php') as $filename){ require_once($filename); } }
наконец, зарегистрируйте поставщика услуг в вашем config/app.php
в массиве поставщиков
'providers' => [ 'App\Providers\HelperServiceProvider', ]
После этого вам нужно запустить composer dump-autoload
и ваши изменения будут видны в Laravel.
теперь загружается любой файл в вашем справочном каталоге и готов к использованию.
Надеюсь, это сработает!