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

概述

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

一 载入引导程序


require __DIR__.'/../bootstrap/autoload.php';
//__DIR__ = D:/www/projectname/public
//require D:/www/projectname/bootstrap/autoload.php

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


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 数组)来生成文件的。

二 创建应用程序实例


$app = require_once __DIR__.'/../bootstrap/app.php';
//$app = D:/www/projectname/bootstrap/app.php

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


//传入根目录,并实例化应用
$app = new IlluminateFoundationApplication(
    realpath(__DIR__.'/../')
);

//注册Http单例
$app->singleton(
    'IlluminateContractsHttpKernel',
    'AppHttpKernel'
);

//注册Console单例
$app->singleton(
    'IlluminateContractsConsoleKernel',
    'AppConsoleKernel'
);

//注册异常单例
$app->singleton(
    'IlluminateContractsDebugExceptionHandler',
    'AppExceptionsHandler'
);
return $app;

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

三 从容器中解析给定类型


//解析Http对应的实现,该方法接收你想要解析的类名或接口名作为参数,返回对应实现的实例
$kernel = $app->make('IlluminateContractsHttpKernel');

//处理Requst请求,并返回Response
$response = $kernel->handle(
    $request = IlluminateHttpRequest::capture()
);

//响应
$response->send();

//终止中间件
$kernel->terminate($request, $response);

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

最后

以上就是鲤鱼宝贝为你收集整理的一、Laravel5.5 入口文件源码阅读的全部内容,希望文章能够帮你解决一、Laravel5.5 入口文件源码阅读所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

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

评论列表共有 0 条评论

立即
投稿
返回
顶部