关于Laravel 的Service Provider

2016年03月22日 in coding using tags Laravel , Service Provider

Laravel的服务提供者是非常重要的机制 它最大的特点是可以按需加载 在app.php里面,比如当前环境是测试环境,可以定义需要加载的提供者,上到生产环境中,又可以加载另外一些提供者。

创建一个服务提供者的过程如下

第一步

创建Services目录,里面写一个Service,这是我们最终代码逻辑要放的地方。

当然也可以建立Contracts文件夹定义约束它的接口。

示例:

Pay.php

namespace App\Services;


class Pay
{
   

    public function __construct($app)
    {
    }
    
    public function test()
    {
        echo 'Hello, I Am Test!';exit;
    }
    
}

第二步

在Providers目录下新建一个我们的提供者,在需要加载的时候提供一个单例给app,具体的操作可以分为绑定,单例等等,详见手册。

示例:

Services\PayServiceProvider.php

namespace App\Providers;

use Illuminate\Support\ServiceProvider;

class PayServiceProvider extends ServiceProvider
{
    public function boot()
    {
        //
    }

    public function register()
    {
        $this->app->singleton('PayService', function ($app) {
            return new \App\Services\Pay($app);
        });
    }
}

第三步

把服务提供者的加载放到app.php里面,在需要的时候加载它

app.php

    'providers' => [
        App\Providers\PayServiceProvider::class,
    ],

测试

这样我们就可以随时调用这个新的Service了

$pay = \App::make('PayService');
$pay->test();