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();