分析laravel的设计思维 之 引导程序的依赖注入行为有点迷惑
查看源码发现laravel启动时会根据顺序启动一系列的引导程序。
会启动 Illuminate -> Foundation -> Bootstrap 目录的下文件这一些列文件。
也就是在Kernel.php 里定义的 写死 $bootstrappers=[]文件列表(顺序很重要)会去逐个执行;
问题1: 每个启动项都必须要实现
public function bootstrap(Application $app){
}
那么larave为什么没有为它们设计接口呢?是因为 上面说的 写死 $bootstrappers=[] 的原因吗? 因为写死,自己知道肯定是这几个文件而且是自己写的,所以就不定义接口了?
问题2: 为什么每个引导程序要在参数定义依赖注入,而不是定义一个抽象类写一个构造函数。
抽象类
public function __construct(Application $app) {
}
abstract public function bootstrap();
这样就自动解决了依赖注入了,再定义一个抽象方法 bootstrap()?
难道还是因为这几个类只有框架自己用,而且是他写死了调用所以不需要去考虑设计了?
推荐文章: