laravel-commode/silent-service

该包的最新版本(dev-master)没有可用的许可信息。

dev-master 2015-10-02 09:08 UTC

This package is not auto-updated.

Last update: 2024-09-14 18:31:27 UTC


README

#Commode: Silent Service

Build Status Code Climate Coverage Status

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()
         {
         
         }
    }