require __DIR__.'/../bootstrap/autoload.php';
一、 定义 LARAVEL_START
初始时间常量
二、 require __DIR__.'/../vendor/autoload.php'
php
这个文件是 Composer 的 class loader , 此文件会注册 Laravel 中全部的 classes。这样咱们就不用本身 include class。laravel
三、compile.php
git
这个文件是把最经常使用的 classes 先 compile 好,有点 cache 的意思。github
四、Patchwork\Utf8\Bootup::initMbstring();
bootstrap
这是一个处理 UTF-8 字符串的 Library数组
五、Illuminate\Support\ClassLoader::register();
app
由于在最开始就已经使用到 composer 的 ClassLoader ,这个 ClassLoader 是 laravel 自己的 ClassLoader。若是有任何档案由于任何缘由没有被 Load 到 Composer ClassLoader 中, 咱们能够使用这个 ClassLoader 来另外加载到 spl_autoload_register 中。
此外 ClassLoader 能够用在 application 的任何地方。composer
六、Illuminate\Workbench\Starter::start($workbench);
框架
$workbench 为 workbench 文件夹的路径。
方法会读取全部 workbench 中全部文件名为 autoload.php 而且 require_once 这些 autoload.php。这样在 Laravel 中就能够正确的调用在 workbench 文件夹中的扩展包。ide
$app = require_once .../bootstrap/start.php
一、$app = new Illuminate\Foundation\Application
实例化 application 自己。
二、$app->detectEnvironment
( 监测运行环境 )
根据运行环境的 hostname 来读取对应的 config file
三、$app->bindInstallPaths(require ...'/paths.php');
这行的 paths.php 保存一些经常使用的路径:
public path
storage path
app path
base path
四、$framework = $app['path.base'].'/vendor/laravel/framework/src'
$framework 中存放框架的路径。
五、require $framework.'/Illuminate/Foundation/start.php;'
读取框架的 start.php
动态的调整错误信息,将全部的 PHP 错误都回传
读取 mycrypt 扩展
将必须的 classes 都 load 进来Illuminate\Http\Request Illuminate\Support\Facades\Facade Illuminate\Foundation\AliasLoader Illuminate\Config\EnvironmentVariables Illuminate\Config\Repository
5.1 、$app->instance('app', $app);
将 $app 绑定到 ioc Container 中,instance 方法是将现有的实例跟 ioc 作绑定。
5.二、$app['env'] = $env = $testEnvironment
监测是否为 phpunit test 执行,若是是的话就读取正确的配置文件。
5.三、Facade::clearResolvedInstances()
跟 Facade::setFacadeApplication($app)
先清除 Facade 中的 Instances
而后再设置 Facade app
5.四、$app->registerCoreContainerAliases();
由于一开始是使用比较短的名字来标识 IoC Container 每个核心的模块,这里是将核心模块用完整名称来标识,完整的名称可让 Dependency Injection 好处理。
5.五、with($envVariable = EnvironmentVariables($app->getEnvironmentVariablesLoader()))->load($env);
读取全部的 $_ENV 跟 $_SERVER 变量到程序中。
5.六、注册 Configuration Repository 到 IoC Container 中
5.七、$app->startExceptionHandling();
使用 Laravel 自己的异常处理。
5.八、if($env!= 'testing') ini_set('display_errors', 'off')
关闭 PHP 自己的错误处理
5.九、设置程序 timezone
5.十、AliasLoad::getInstance($aliases)->register();
$alias 里面为一个数组,键为全部模块的 alias, 值为 alias 的完整名称。 register 全部 alias 到 spl_autoload_register 中。
5.十一、providers = $config['providers'];
跟 $app->getProviderRepository()->load($app, $providers);
读取全部核心须要的 service providers,好比 Session,Cache…
5.十二、$app->booted(function() use ($app, $env) {...})
这个 booted 方法是给 laravel 一个最后的机会去复写任何已经存在的 IoC 绑定,这个方法里面已经预设触发读取的一些文件:
global.php{$env}.phproutes.php