service container的一个好处

service container最明显的一个特点是,它产生实例不需要显性的new一个类,因此甚至也不需要传入构造函数的参数(如果参数也是可以通过容器生成),看一个类的定义:

class FooHandler
{
  public __construct(Bar $bar = null)
  {
    // ...
    $bar->doSomething();
  }
}

如果你直接通过new FooHandler($bar),生成你需要的对象时,必须先得到Bar的实例$bar,这在有时候是没必要的,在Laravel中,可以直接通过:

$fooHandler = app()->make(FooHandler::class);

得到,唯一不足的一点是$fooHandler不能被IDE智能识别。

发表评论

您的电子邮箱地址不会被公开。 必填项已用*标注