laravel 的核心设计思想之服务容器

7 篇文章 1 订阅

服务容器

就是普通的ioc容器,因为是用来管理服务(组件)的,所以叫服务容器

这个服务容器在哪?

容器类的具体路径 vendor/laravel/framework/src/Illuminate/Container/Container.php

如何把服务绑定到这个容器?

容器类有个 bind 方法,可以把服务绑定到容器类的 bindings 属性,这是个大数组

容器类中还有个singleton方法,也是用来绑定的,是对bind方法的封装,可以看到服务提供者中,都是用这两个方法注册到容器的

例如下面的redis服务

如何取出容器中的服务使用呢?

使用容器类的make方法

但是,请注意,一般不会直接操作这个 Container 容器类,而是会使用它的子类

laravel1/vendor/laravel/framework/src/Illuminate/Foundation/Application.php

Application类能使用Container的所有方法

有没有更方便的取出服务的方法呢?

有,在 laravel1/vendor/laravel/framework/src/Illuminate/Foundation/helpers.php 中有个app助手函数,可以用来取出服务,调用的是Application对象,我们在控制器中取出服务的时候, app('db') 这么写就可以了

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值