在开始之前需要了解一些单词的意思,这对读代码非常有帮助。
resolve:解析(递归地实例化)
abstract:抽象类
Concrete:具体的
instance:实例化
instances:实例
bind:绑定。在laravel中指把一个契约(核心接口)与其具体实现的类的对应关系存入app容器类的变量里,例如:把缓存契约与CacheManager绑定。
Alias:别名。例如app是\Illuminate\Contracts\Container\Container::class的别名,这是为了程序简短易读。
resolved:已解析的
laravel处理的请求包含http请求和console请求,http到达/public/index.php,console到达/artisan。区别在于所解析的核心类不同,一个是http,一个是console。
1.请求到达public/index.php,执行此文件。与以前版本不同,这里会先判断是否处于维护模式。
2.之后composer自动加载运行所需类库,比如此过程中会以文件的方式自动加载助手函数。
(此过程中会以文件的方式自动加载(autoload)助手函数,所以助手函数在构建app容器时就可用了,所有用到它的都不需要引用。)
这是我本地composer.lock中摘出的
"autoload": {
"files": [