-
如果你的提供器仅在服务容器中注册绑定,就可以选择推迟其注册,直到当它真正需要注册绑定。
-
推迟加载这种提供器会提高应用程序的性能,因为它不会在每次请求时都从文件系统中加载。
-
Laravel 编译并保存延迟服务提供器提供的所有服务的列表,以及其服务提供器类的名称。因此,只有当你在尝试解析其中一项服务时,Laravel 才会加载服务提供器。
-
要延迟提供器的加载,请将 defer 属性设置为 true ,并定义 provides 方法。provides 方法应该返回由提供器注册的服务容器绑定:
<?php
namespace App\Providers;
use Riak\Connection;
use Illuminate\Support\ServiceProvider;
class RiakServiceProvider extends ServiceProvider
{
/**
* 是否延时加载提供器。
*
* @var bool
*/
protected $defer = true;
/**
* 注册服务提供器。
*
* @return void
*/
public function register()
{
$this->app->singleton(Connection::class, function ($app) {
return new Connection($app['config']['riak']);
});
}
/**
* 获取提供器提供的服务。
*
* @return array
*/
public function provides()
{
return [Connection::class];
}
}
网友评论