在任意一个实现了ServiceProvider
类中的register
中添加以下内容。
$this->app->singleton('dbu', function ($app) {
return new Dbu($app);
});
因为其中的$this->app
是继承于Container
类的,
那他也是一个容器,通过singleton
方法将Dub类绑定在容器中,并设置其名称为 dub
此时想要引用它就可以通过依赖注入的方式直接引用了
如:
public function test(Dbu $dbu)
{
dd($dbu->print());
}
在laravel的Container
类中提供了三种不同的注册方法, 分别是bind
、instance
和singleton
, 下面是他们之间的区别bind
、instance
和singleton
的区别
use Illuminate\Container\Container;
class Dbu extends Container
{
public function __construct(array $values = [])
{
$dbu = $this;
$this->registerMake($dbu);
}
public function registerMake($dbu)
{
# ①