对laravel容器的理解--如何使用容器

本文介绍了Laravel容器的工作原理,包括方法注入、make方法的使用以及服务提供者的角色。详细阐述了如何通过类型提示在构造函数和方法中利用容器创建实例,以及在无法直接使用new关键字时如何解决问题。同时,解释了服务提供者的作用,如注册特殊绑定,并讨论了不同类型的绑定方法,如bind、singleton和instance。此外,还提到了延迟加载服务提供者以节省资源的策略。
摘要由CSDN通过智能技术生成
  1. 首先就是方法注入了。不管在构造方法中还是在普通方法中,通过对变量使用类的类型提示,容器会自动创建一个实例并赋给这个变量,比如一个 Work 类的构造函数:
    public function __construct(Service $service)
    {
        $this->service = $service ;
    }

    这种方式使用的局限性就是这个 Work 消费类不可以使用 new 关键字创建实例,不能用 new Work(),必须使用容器的依赖注入。

  2. 使用容器的 make 方法,这个就是解决上面这个问题的。有的时候我们使用外部包,这个包对 Work 有个依赖,他需要一个 Work 的实例,但是 work 包对 Service 又有依赖,你也不能随便把包改成依赖注入,这个时候可以改造 Work 类:
    public function __construct()
    {
        $this->service = app(Service::class);
    }

    这个时候就可以通过 new 创建一个 Work 的实例并传入到包中。

  3. 第三个就是通过服务提供者注册一些特别的绑定;一般来说如果你的类不需要通过接口或者 alias 来注入的话,就没必要在服务提供者里面注册,因为容器解析实例的过程是先查找容器中的实例和服务提供者里面的绑定,如果查找不到就会自动使用 new 关键字创建。

容器里面存储的实际上是一些 key=>value 的数组。其中 key 就是我们在方法注入的类型提示或者 make () 方法中的参数,实际上就是一个字符串。value 代表的是实际上实例化的类。

<
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值