dev-master
9999999-dev[Larakit] Отложенная регистрация сервис-провайдеров и алиасов для Laravel
MIT
The Requires
laravel laravel 5 larakit
[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