Как создать вспомогательные методы на Laravel, а не на фасаде
Я прочитал много вопросов о том, как создать вспомогательные методы на Laravel 5.1. Но я не хочу достичь этого на Фасаде
HelperClass::methodName();
Я хочу сделать вспомогательные методы, как на этих методах.
myCustomMethod();
Я не хочу делать это фасадом. Это возможно? Как? Благодарю.
3 ответа
Если вы хотите пойти по пути Laravel, вы можете создать 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 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.
теперь любой файл в вашем Helpers
каталог загружен и готов к использованию.
Надеюсь, это работает!
Это то, что предлагает JeffreyWay в этом обсуждении Laracasts .
В пределах вашегоapp/Http
каталог, создайтеhelpers.php
файл и добавьте свои функции.
В пределахcomposer.json
, в блок автозагрузки добавить"files": ["app/Http/helpers.php"]
. И беги
composer dump-autoload.