我是靠谱客的博主 鲤鱼宝贝,这篇文章主要介绍一、Laravel5.5 入口文件源码阅读,现在分享给大家,希望可以做个参考。

我的项目根目录为D:/www/projectname,则入口文件位于D:/www/projectname/public目录下。

一 载入引导程序


复制代码
1
2
3
4
require __DIR__.'/../bootstrap/autoload.php'; //__DIR__ = D:/www/projectname/public //require D:/www/projectname/bootstrap/autoload.php

D:/www/projectname/bootstrap/autoload.php完整代码如下


复制代码
1
2
3
4
5
6
7
8
9
10
11
12
13
14
define('LARAVEL_START', microtime(true));//记录程序开始运行的时间 //composer自动加载类库,当调用类的时候会自动引入 require __DIR__.'/../vendor/autoload.php'; //require D:/www/projectname/vendor/autoload.php $compiledPath = __DIR__.'/cache/compiled.php'; //载入编译类 if (file_exists($compiledPath))//如果该编译类存在则载入 { require $compiledPath; }

该编译文件默认不存在,需要调用 php artisan optimize --force artisan命令生成。
optimize命令把常用加载的类合并到一个文件里,通过减少文件的加载,来提高运行效率。
会生成bootstrap/cache/compiled.php bootstrap/cache/services.json两个文件。
你可以可以通过修改config/compile.php 文件来添加要合并的类。
在 production 环境中,参数 --force 不需要指定,文件就会自动生成。
要清除类映射加载优化,请运行以下命令:php artisan clear-compiled,此命令会删除上面 optimize 生成的两个文件。
注意:此命令要运行在 php artisan config:cache 后,因为 optimize 命令是根据配置信息(如:config/app.php 文件的 providers 数组)来生成文件的。

二 创建应用程序实例


复制代码
1
2
3
$app = require_once __DIR__.'/../bootstrap/app.php'; //$app = D:/www/projectname/bootstrap/app.php

D:/www/projectname/bootstrap/app.php完整代码如下:


复制代码
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
//传入根目录,并实例化应用 $app = new IlluminateFoundationApplication( realpath(__DIR__.'/../') ); //注册Http单例 $app->singleton( 'IlluminateContractsHttpKernel', 'AppHttpKernel' ); //注册Console单例 $app->singleton( 'IlluminateContractsConsoleKernel', 'AppConsoleKernel' ); //注册异常单例 $app->singleton( 'IlluminateContractsDebugExceptionHandler', 'AppExceptionsHandler' ); return $app;

singleton 方法绑定一个只需要解析一次的类或接口到容器,然后接下来对容器的调用将会返回同一个实例:

三 从容器中解析给定类型


复制代码
1
2
3
4
5
6
7
8
9
10
11
12
13
14
//解析Http对应的实现,该方法接收你想要解析的类名或接口名作为参数,返回对应实现的实例 $kernel = $app->make('IlluminateContractsHttpKernel'); //处理Requst请求,并返回Response $response = $kernel->handle( $request = IlluminateHttpRequest::capture() ); //响应 $response->send(); //终止中间件 $kernel->terminate($request, $response);

以上只是个人的理解,可能有偏差。欢迎提出异议。

最后

以上就是鲤鱼宝贝最近收集整理的关于一、Laravel5.5 入口文件源码阅读的全部内容,更多相关一、Laravel5.5内容请搜索靠谱客的其他文章。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(59)

评论列表共有 0 条评论

立即
投稿
返回
顶部