dev-master
9999999-dev[Larakit] Отложенная регистрация сервис-провайдеров и алиасов для Laravel
MIT
The Requires
laravel laravel 5 larakit
Wallogit.com
2017 © Pedro Peláez
[Larakit] Отложенная регистрация сервис-провайдеров и алиасов для Laravel
После установки очередного пакета, который требовал внесения правок конфига, (*2)
./config/app.php
в секциях сервис-провайдеры и алиасы я сказал "Доколе!!! Надоело!!!"., (*3)
Тем более, что в разработке было очень много своих пакетов, которые требовали регистрации: - сервис-провайдеров - алиасов - middleware (общесайтовых, групповых, для роутов), (*4)
Так появился на свет модуль larakit/lk-boot., (*5)
Принцип отложенной регистрации всего этого хозяйства заключается в использовании секции autoload в composer., (*6)
Но, напрямую нельзя записать инструкции, так как в момент подключения, (*7)
{
"autoload": {
"files": [
"src/init.php"
]
}
}
фреймворк еще не инициализирован. Поэтому задача состояла из двух пунктов:, (*8)
1) положить куда то данные о вещах, требующих регистрации, причем чтобы это "что-то" не требовало инициализированного фреймворка, (*9)
2) в нужное время спросить у этого "чего-то" - есть что для регистрации? и инициализировать, (*10)
Создавая модуль указываем в composer.json автоподключаемый файл init.php, (*11)
{
"name": ".../...",
"description": "...",
"license": "MIT",
"require": {
...
},
"autoload": {
"files": [
"src/init.php"
]
}
}
В этом файле "src/init.php" регистрируем то, что нужно, (*12)
<?php
/*################################################################################
регистрация сервис-провайдера
################################################################################*/
Larakit\Boot::register_provider('Larakit\Base\LarakitServiceProvider');
/*################################################################################
регистрация алиаса
################################################################################*/
Larakit\Boot::register_alias('View', 'Illuminate\Support\Facades\View');
/*################################################################################
регистрация middlewares
################################################################################*/
Boot::register_middleware(\Illuminate\Foundation\Http\Middleware\CheckForMaintenanceMode::class);
/*################################################################################
регистрация route middlewares
################################################################################*/
Boot::register_middleware_route('auth',
\App\Http\Middleware\Authenticate::class);
Boot::register_middleware_route('auth.basic',
\Illuminate\Auth\Middleware\AuthenticateWithBasicAuth::class);
Boot::register_middleware_route('guest',
\App\Http\Middleware\RedirectIfAuthenticated::class);
Boot::register_middleware_route('throttle',
\Illuminate\Routing\Middleware\ThrottleRequests::class);
/*################################################################################
регистрация group middlewares
################################################################################*/
Boot::register_middleware_group('api', 'throttle:60,1');
Boot::register_middleware_group('web', [
\App\Http\Middleware\EncryptCookies::class,
\Illuminate\Cookie\Middleware\AddQueuedCookiesToResponse::class,
\Illuminate\Session\Middleware\StartSession::class,
\Illuminate\View\Middleware\ShareErrorsFromSession::class,
\App\Http\Middleware\VerifyCsrfToken::class,
]);
Производим изменения в файле, (*13)
./config/app.php
(требуется произвести всего один раз), (*14)
<?php
return [
'providers' => array_merge([
...
], \Larakit\Boot::providers()),
'aliases' => array_merge([
...
], \Larakit\Boot::aliases()),
];
Производим изменения в файле, (*15)
./app/Http/Kernel.php
(требуется произвести всего один раз), (*16)
<?php
namespace App\Http;
use Illuminate\Contracts\Foundation\Application;
use \Larakit\TraitKernel as TraitKernel;
use Illuminate\Foundation\Http\Kernel as HttpKernel;
use Illuminate\Routing\Router;
class Kernel extends HttpKernel {
use TraitKernel;
function __construct(Application $app, Router $router){
$this->__traitConstruct();
parent::__construct($app, $router);
}
}
[Larakit] Отложенная регистрация сервис-провайдеров и алиасов для Laravel
MIT
laravel laravel 5 larakit