laravel-commode / silent-service
Requires
- php: >=5.5.0
- illuminate/container: 5.1.*
- illuminate/support: 5.1.*
Requires (Dev)
- satooshi/php-coveralls: dev-master
This package is not auto-updated.
Last update: 2024-09-14 18:31:27 UTC
README
#Commode: Silent Service
laravel-commode/silent-service 是一个定制的服务提供者,具有针对 laravel-commode 包环境或 laravel 5.1 包开发而设计的有用功能。
####内容
##安装
您可以使用 composer 安装 laravel-commode/silent-service。
"require": { "laravel-commode/silent-service": "dev-master" }
有两种方式可以注册服务提供者。第一种是在 app.php
配置文件中进行经典注册,但这不是必需的,因为任何 SilentService
实例都会对其他服务提供者进行依赖检查,如果它们未注册,则强制注册。
<?php // apppath/config/app.php return [ // config code... 'providers' => [ // your app providers... , LaravelCommode\SilentService\SilentServiceServiceProvider::class // or any your SilentService instance ] ];
##用法
laravel-commode/silent-service 被开发出来,以提供无需修改 app.php
代码即可进行服务依赖加载和别名绑定,例如如果您的包的服务提供者依赖于来自不同包的五个不同的服务,则您需要为所有五个包进行配置修改 - 这样服务负责依赖控制,而不是“最终开发者”。
要创建一个静默服务提供者,您需要扩展 LaravelCommode\SilentService\SilentService
类并实现两个受保护的方法:SilentService::registering()
和 SilentService::launching()
。
要声明对不同的服务提供者的依赖,您需要重写受保护的方法 SilentService::uses()
。此方法必须返回一个包含服务提供者类名的数组,这些类名需要在触发 SilentService::registering()
之前注册。
如果您的服务提供者需要在 laravel 门面中实现别名,您需要重写受保护的方法 SilentService::aliases()
。此方法必须返回一个字符串数组,其中数组键是别名名称,数组值是门面类名。
由于服务提供者的使用不仅是为了注册新功能,还可能是修改旧功能,而且社区中还有许多门面讨厌者,因此存在受保护的静默服务提供者方法 SilentService::with(array $resolvable, callable $do)
,您将在示例中看到其用法。请注意,它可以解析不仅仅是服务名称,还可以解析 IoC 中找到的任何内容。
<?php namespace MyVendor\MyPackage; use LaravelCommode\SilentService\SilentService; use Illuminate\View\Factory; use Illuminate\Http\Request; class MyPackageServiceProvider extends SilentService { protected function uses() { return [\CustomVendor\CustomPackage\CustomPackageServiceProvider::class]; } protected function aliases() { return [ 'MyFacade' => 'MyVendor\MyPackage\MyPackageFacade' ]; } /** * This method will be triggered instead * of original ServiceProvider::register(). * @return mixed */ public function registering() { $this->with(['view', 'request'], function (Factory $view, Request $request) { // do registrations }); } /** * This method will be triggered instead * when application's booting event is fired. * @return mixed */ public function launching() { } }