我的项目根目录为
D:/www/projectname
,则入口文件位于D:/www/projectname/public
目录下。
一 载入引导程序
1
2
3
4require __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
14define('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内容请搜索靠谱客的其他文章。
发表评论 取消回复