2017 © Pedro Peláez
 

library lk-boot

[Larakit] Отложенная регистрация сервис-провайдеров и алиасов для Laravel

image

larakit/lk-boot

[Larakit] Отложенная регистрация сервис-провайдеров и алиасов для Laravel

  • Friday, August 11, 2017
  • by larakit
  • Repository
  • 1 Watchers
  • 0 Stars
  • 805 Installations
  • PHP
  • 13 Dependents
  • 0 Suggesters
  • 0 Forks
  • 0 Open issues
  • 1 Versions
  • 4 % Grown

The README.md

Total Downloads Latest Stable Version Latest Unstable Version License, (*1)

[Larakit Boot] - пакет для отложенной регистрации сервис-провайдеров, алиасов и middleware

После установки очередного пакета, который требовал внесения правок конфига, (*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)

1. Решение вопроса регистрации

Создавая модуль указываем в 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,
]);

2. Решение вопроса инициализации сервис-провайдеров и алиасов

2.1. Сервис-провайдеры и алиасы

Производим изменения в файле, (*13)

./config/app.php

(требуется произвести всего один раз), (*14)

<?php

return [
    'providers'       => array_merge([
        ...
    ], \Larakit\Boot::providers()),

    'aliases'         => array_merge([
        ...
    ], \Larakit\Boot::aliases()),

];

2.2. Middleware

Производим изменения в файле, (*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);
    }

}

Profit!

The Versions

11/08 2017

dev-master

9999999-dev

[Larakit] Отложенная регистрация сервис-провайдеров и алиасов для Laravel

  Sources   Download

MIT

The Requires

 

laravel laravel 5 larakit