入口文件 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 IlluminateFoundationApplication(
realpath(__DIR__.'/../')
);
//注册HTTP内核,web端的请求处理,查看下apphttpKernal父类
$app->singleton(
IlluminateContractsHttpKernel::class,
AppHttpKernel::class
);
//注册控制台内核,cli的请求处理
$app->singleton(
IlluminateContractsConsoleKernel::class,
AppConsoleKernel::class
);
//错误处理
$app->singleton(
IlluminateContractsDebugExceptionHandler::class,
AppExceptionsHandler::class
);
return $app;
3、HTTP/控制器内核
//上面注册过此服务,这里调用
$kernel = $app->make(IlluminateContractsHttpKernel::class);
//服务提供者的handle方法
$response = $kernel->handle(
$request = IlluminateHttpRequest::capture()
);
$response->send();
$kernel->terminate($request, $response);