Я работаю над проектом Laravel 5.1 и разработал много помощников.
Есть ли способ автоматически зарегистрировать класс помощников в ServiceProivder вместо того, чтобы добавлять их вручную?
Я работаю над проектом Laravel 5.1 и разработал много помощников.
Есть ли способ автоматически зарегистрировать класс помощников в ServiceProivder вместо того, чтобы добавлять их вручную?
Я работал над этим и, наконец, исправил его, собрав вместе разные головоломки, заканчивающиеся этим решением:
Для Laravel 5:
Шаг 1. Создана папка app/Helpers
Шаг 2. В папке app/Providers
создайте провайдера HelpersServiceProvider.php
, используя следующую команду мастера:
php artisan make:provider HelpersServiceProvider
Шаг 3. В файле HelpersServiceProvider.php
мы создаем функцию внутреннего регистра foreach loop
для получения всех вспомогательных классов следующим образом:
public function register()
{
foreach (glob(app_path() . '/Helpers/*.php') as $helpersfilename)
{
require_once($helpersfilename);
}
}
Шаг 4. В config/app.php
добавлена следующая строка
/*
* Application Service Providers added by developer...
*/
App\Providers\HelpersServiceProvider::class,
Вот и все, решение здесь протестировано и работает на всех версиях Laravel 5.x. Теперь вы можете добавлять неограниченное количество хелперов в папку helpers, они будут автоматически добавлены в систему.
Laravel 4 еще не тестировался, но если кто-то сделает это, добавьте/отредактируйте это для Laravel 4.
autoload
внутри composer.json
. Вот как это у меня: "files": [ "app/Helpers/xyz.php"]
Я нашел, что это проще, так как у меня будет только 1 или 2 вспомогательных файла в моем приложении. Но я обязательно воспользуюсь вашим методом, если у меня будет много вспомогательных файлов.
- person Neel; 09.08.2015
within the register method, you should only bind things into the service container. You should never attempt to register any event listeners, routes, or any other piece of functionality within the register method
. Итак, мне интересно, считается ли этот подход «привязкой чего-либо к контейнеру службы» или он противоречит тому, что указано в документах? Я просто пытаюсь лучше понять ситуацию, чтобы принять решение, но опять же, мне нравится такой подход!
- person cbcaio; 08.12.2015