Где зарегистрировать поставщиков фасадов и услуг в Lumen

Я ищу, где добавить фасад ниже в Lumen.

'JWTAuth' => 'Tymon\JWTAuth\Facades\JWTAuth'

ОТРЕДАКТИРОВАНО

Также где прописать поставщика услуг в bootstrap\app.php

$app->register('Tymon\JWTAuth\Providers\JWTAuthServiceProvider');

Пожалуйста помогите.


person Emeka Mbah    schedule 22.05.2015    source источник


Ответы (3)


В своем bootstrap/app.php убедитесь, что вы раскомментировали:

$app->withFacades();

Затем зарегистрируйте псевдоним вашего класса и проверьте, существует ли он уже (иначе ваши тесты сломаются):

if (!class_exists('JWTAuth')) {
    class_alias('Tymon\JWTAuth\Facades\JWTAuth', 'JWTAuth');
}

Чтобы зарегистрировать ServiceProvider, проверьте bootstrap/app.php:

/*
|--------------------------------------------------------------------------
| Register Service Providers
|--------------------------------------------------------------------------
|
| Here we will register all of the application's service providers which
| are used to bind services into the container. Service providers are
| totally optional, so you are not required to uncomment this line.
|
*/

// $app->register('App\Providers\AppServiceProvider');

// Add your service provider here
$app->register('Tymon\JWTAuth\Providers\JWTAuthServiceProvider');

Обновление №1

Я сделал простой шаблон здесь для интеграции Lumen с JWT и Dingo.

person krisanalfa    schedule 22.05.2015
comment
на самом деле он создает не Facade, а class_alias, и даже если в большинстве случаев это не имеет значения, есть некоторые пакеты laravel, которые ожидают, что данный Facade существует и терпит неудачу, теперь я пытаюсь выяснить, как заставить его работать - person zakius; 08.09.2015
comment
Вы можете увидеть это. Метод использует class_alias, чтобы Facade можно было вызывать в глобальном пространстве имен. И... Вопрос также задавался о том, "Где прописать фасад", а не "как сделать фасад". Я думаю, вам нужно проверить класс, которому вы хотите дать псевдоним, он должен быть расширением самого Facade. Вы можете прочитать это, если хотите создать свой собственный Facade. - person krisanalfa; 08.09.2015
comment
@KrisanAlfaTimur Я пытаюсь использовать этот пакет. Я добавил class_alias('EasySlug', 'EasySlug\EasySlug\EasySlugFacade'); и $app->register('EasySlug\EasySlug\EasySlugServiceProvider');. Теперь я получаю сообщение об ошибке: Class 'EasySlug' not found. Как это решить? - person w3spi; 15.11.2015
comment
@ Zl3n Привет, я думаю, тебя просто неправильно поняли, используй class_alias('EasySlug\EasySlug\EasySlugFacade', 'EasySlug'); вместо class_alias('EasySlug', 'EasySlug\EasySlug\EasySlugFacade');. Для получения дополнительной информации прочитайте это. Первым аргументом функции class_alias является исходное имя класса, а не псевдоним. Надеюсь это поможет. - person krisanalfa; 16.11.2015
comment
Немного по касательной, я оказался здесь, потому что class_alias сломал мои тесты PHPUnit. Защищайтесь от многократного выполнения class_alias с class_exists. - person Peter Mellett; 25.11.2015
comment
Спасибо @Peter, ваш комментарий был очень полезен для меня. - person whoan; 26.09.2016
comment
Кроме того, проверьте это тоже - person ProfNandaa; 09.02.2017

Чтобы зарегистрировать фасад с псевдонимом, перейдите к bootstrap/app.php и раскомментируйте:

$app->withFacades();

... он указывает фреймворку начинать с фасадов. Чтобы добавить свои фасады, просто поместите их в массив и передайте массив в качестве второго аргумента, установив для первого аргумента значение true, как показано ниже:

$app->withFacades(true, [
    'Tymon\JWTAuth\Facades\JWTAuth' => 'JWTAuth',
    'facade' => 'alias',
]);

Чтобы зарегистрировать поставщика услуг, в том же файле прокрутите вниз до соответствующего раздела комментариев и добавьте следующую строку:

$app->register(Tymon\JWTAuth\Providers\JWTAuthServiceProvider::class);
person qwaz    schedule 19.07.2017

В вашем bootstrap\app.php

Пример для провайдера

// XML parser service provider
$app->register(\Nathanmac\Utilities\Parser\ParserServiceProvider::class);
// GeoIP
$app->register(\Torann\GeoIP\GeoIPServiceProvider::class);
$app->withEloquent();

Пример псевдонима

// SERVICE ALIASES
class_alias(\Nathanmac\Utilities\Parser\Facades\Parser::class, 'Parser');
class_alias(\Torann\GeoIP\Facades\GeoIP::class, 'GeoIP');
$app->withFacades();
...
...
...

Удачи

person llioor    schedule 17.06.2018