laravel5.5入口文件分析

入口文件 public/index.php

1、加载composer的自动加载器

require __DIR__.'/../vendor/autoload.php';

自动加载,不用再各种require了,更重要的是可以使用composer管理包,管理依赖,可以参考下composer的使用。

2、bootstrap/app.php 得到laravel应用程序实例

$app = require_once __DIR__.'/../bootstrap/app.php';

bootstrap/app.php文件很简单,实例化并注册一些服务

//创建app实例,一切都是由此容器而起,包括服务提供者等等
$app = new Illuminate\Foundation\Application(
    realpath(__DIR__.'/../')
);

//注册HTTP内核,web端的请求处理,查看下app\http\Kernal父类
$app->singleton(
    Illuminate\Contracts\Http\Kernel::class,
    App\Http\Kernel::class
);

//注册控制台内核,cli的请求处理
$app->singleton(
    Illuminate\Contracts\Console\Kernel::class,
    App\Console\Kernel::class
);

//错误处理
$app->singleton(
    Illuminate\Contracts\Debug\ExceptionHandler::class,
    App\Exceptions\Handler::class
);


return $app;

3、HTTP/控制器内核

//上面注册过此服务,这里调用
$kernel = $app->make(Illuminate\Contracts\Http\Kernel::class);

//服务提供者的handle方法
$response = $kernel->handle(
    $request = Illuminate\Http\Request::capture()
);

$response->send();

$kernel->terminate($request, $response);

猜你喜欢

转载自blog.csdn.net/qq_20355575/article/details/81975004