Laravel 服务容器与测试全解析
1. Laravel 服务容器
1.1 基本绑定
在 Laravel 中,服务容器的绑定本质上是告诉容器如何解析绑定键的实例。通常可以通过传递闭包来实现绑定,例如:
$this->app->bind(UserMailer::class, function ($app) {
return new UserMailer(
$app->make(Mailer::class),
$app->make(Logger::class),
$app->make(Slack::class)
);
});
每次请求该类的新实例时,闭包都会重新运行并返回新的输出。
1.2 单例、别名和实例绑定
- 单例绑定 :若想缓存绑定闭包的输出,避免每次请求实例时都重新运行闭包,可使用单例模式,通过
$this->app->singleton()
方法实现:
public function register()
{
$this->app->singleton(Logger::class, function () {
return new Logger('\log\path\here', 'error');
});
}