laravel 解析 bootstrap/app.php 中绑定服务容器的一种方式

7 篇文章 1 订阅

在laravel中,想要把服务绑定到容器一般是用下面的方法,在服务提供者中,常见类似的写法,第一个参数传标识,第二个参数传闭包

但是在 bootstrap/app.php 中有三行代码是这么写的,第一个参数传了一个契约(接口),第二个参数传了一个具体类

问:为什么要这么写呢? 答:为了在依赖注入时,实现解耦

举个例子:

如果需要在控制器中调用自己写的工具类,比如处理字符串的,如何调用呢?

创建一个文件 app/Tools/StringTools.php  注:Tools目录也是自己建的,随便建个啥目录都行,只是为了方便管理

在控制器中调用,正常引入,依赖注入,就可以用了

但是,如果后来处理字符串的工具类换了呢?比如换成了StringUnit类,那就得改这个Template控制器了,像下图这样

如果,之前引入StringTools类的有100个控制器文件呢?挨个改,想想都觉得刺激 ⊙▽⊙.有别的方法吗?有!

1,建一个 app/Contracts/Tools.php 文件,这是个接口文件

2,在 app/Tools/StringTools.php 类中,实现 Tools接口

3,在 app/Providers/AppServiceProvider.php 文件的 register 方法中,进行绑定

4,在控制器中,注入接口,而不是直接注入StringTools类

这时,如果需要把StringTools类换成StringUnit类就很简单了

1,新建StringUnit类,并实现Tools接口

2,更改 app/Providers/AppServiceProvider.php 文件的 register 方法,搞定! ^_^

在 bootstrap/app.php 中的那三个绑定,就是干这个用的

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值