laradic/service-provider

Laravel 5服务提供者加强版。功能丰富。

1.0.0 2017-05-27 23:49 UTC

This package is not auto-updated.

Last update: 2024-09-14 19:20:23 UTC


README

License

为Laravel 5框架提供的一般支持包。Laradic支持提供常用功能灵活且可重用的代码组件,以及自定义默认Laravel 5文件夹结构的方法。

该包遵循FIG标准PSR-1、PSR-2和PSR-4,以确保共享PHP代码之间的高互操作性。

快速安装

通过Composer安装包。

composer require laradic/service-provider=~1.0

文档

完整文档可以在这里找到

快速概述

你在Service Providers中编写的代码通常非常重复,感觉你已经做了很多次。

Laradic ServiceProvider可能正是你所寻找的东西。它是一种模块化、可配置且非常可扩展的创建提供者的方式。我认为一些示例可以更好地解释它。

示例

资源示例

处理资源的比较。

“默认”方式在你的register和/或boot目录中使用预定义的方法来挂钩到vendor:publish命令。

class MyServiceProvider extends \Illuminate\Support\ServiceProvider {
    public function boot(){
        // config: blade-extensions
        $publishPath = function_exists('config_path') ? config_path('blade_extensions.php') : base_path('config/blade_extensions.php');
        $this->publishes([ __DIR__ . '/../config/blade_extensions.php' => $publishPath ], 'config');
    
        // views: blade-ext
        $this->loadViewsFrom(__DIR__ . '/../resources/views', 'blade-ext');
        $this->publishes([ __DIR__ . '/../resources/views' => resource_path('views/vendor/blade-ext') ], 'views');
        
        // migrations
        $this->loadMigrationsFrom(__DIR__.'/../database/migrations');
        
        // translations
        $this->loadTranslationsFrom(__DIR__.'/../resources/trans', 'blade-ext');
        $this->publishes([__DIR__.'/../resources/trans' => resource_path('lang/vendor/blade-ext') ]);
        
        // assets
        $this->publishes([ __DIR__.'/../resources/assets' => public_path('vendor/blade-ext')], 'public');
    }

    public function register(){
        $this->mergeConfigFrom(__DIR__ . '/../config/blade_extensions.php', 'blade_extensions');
    }
}

“Laradic”方式重写属性以定义键值。

class MyServiceProvider extends \Laradic\ServiceProvider\ServiceProvider {
    protected $configFiles = ['blade_extensions'];
    protected $viewDirs = ['views' => 'blade-ext'];
    protected $migrationDirs = ['migrations'];
    protected $translationDirs = ['trans' => 'blade-ext'];
    protected $assetDirs = ['assets' => 'blade-ext'];
} 

当然,你也可以重新配置路径。你不必坚持默认的目录结构。但这超出了本例的范围,可以在文档中找到。

绑定和命令示例

“默认”方式

“Laradic”方式重写属性以定义键值。

class MyServiceProvider extends \Laradic\ServiceProvider\ServiceProvider {
    // Will look for all commands inside the 'Console' directory relative to this service provider
    protected $findCommands = ['Console']; 
} 

或者

class MyServiceProvider extends \Laradic\ServiceProvider\ServiceProvider {
    // Register by FQN
    protected $commands = [Console\MyCommand::class]; 
    // or by custom binding name  
    protected $commands = ['commands.my.command' => Console\MyCommand::class];  
} 

再次,还有更多变体和选项超出了本例的范围。请阅读文档

注册和启动

ServiceProvider没有覆盖现有功能。让它忽略所有额外内容是完全可能的。如果你想在使用registerboot方法时保留这些方法,