laradic / service-provider
Laravel 5服务提供者加强版。功能丰富。
1.0.0
2017-05-27 23:49 UTC
Requires
- php: >=5.5.9
- illuminate/support: ~5.0
- laradic/support: ~1.0
Requires (Dev)
- fabpot/php-cs-fixer: ~1.9
- laradic/phing: 1.0.*
- laradic/testing: ~1.0.1
- mockery/mockery: 0.9.*
- phpunit/phpunit: ~4.0|~5.0
This package is not auto-updated.
Last update: 2024-09-14 19:20:23 UTC
README
为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
没有覆盖现有功能。让它忽略所有额外内容是完全可能的。如果你想在使用register
和boot
方法时保留这些方法,