有的时候为了复用方法会在一个控制器中调用另一个控制器的方法。
比如,A控制器中调用B控制器的方法,
最简单的办法就是new一个B控制器
但是这样会报错,因为一般情况下所有控制器都会继承BaseController,
BaseController是ThinkPHP提供的基础控制器,它有个构造函数

thinkphp
只要想实例化BaseController或者BaseController的子类,必须要带App对象,就像这样
只是这样手动实例化App再传入
比较麻烦
假设哪天构造函数需要的不再是App对象而是改成了Request对象,
上面的代码还得要改一遍
所以这种情况应该用ThinkPHP的依赖注入,
它可以根据需要自动进行依赖注入,不需要再手动实例化再传入,
怎么使用依赖注入呢?
ThinkPHP提供了一个invoke助手函数,它的第一个参数是类名,第二个参数是参数,
用invoke函数实现上面的代码如下:
明显这样更简洁,而且不用担心依赖的类发生改变。
最后小编简洁了下
这一行代码就可以解决我的需求啦,至于后面有没有问题,这个不清楚,起码问题现在是解决了!