196 laravel 源码解析-3

来源:互联网 发布:如何上传淘宝宝贝图片 编辑:程序博客网 时间:2024/06/07 09:51

Illuminate\Foundation\Application

我发现在看第一节所讲的make方法时候有点迷糊,可能是看代码的顺序有点问题.所以这次我们先回到 public/index.php

public/index.php

$kernel = $app->make(Illuminate\Contracts\Http\Kernel::class);

发现这里的$kernel是make方法返回的一个对象.
make在第一节中提到过,这里的app是

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

所以我们再看一下bootstrap/app.php这个文件

bootstrap/app.php

$app = new Illuminate\Foundation\Application(    realpath(__DIR__.'/../'));...return $app;

原来上面的app是Illuminate\Foundation\Application对象,它在第一行new,最后一行return,于是我们再看Illuminate\Foundation\Application

Illuminate\Foundation\Application

make()方法开始,

public function make($abstract, array $parameters = []){    $abstract = $this->getAlias($abstract);    if (isset($this->deferredServices[$abstract])) {        $this->loadDeferredProvider($abstract);    }    return parent::make($abstract, $parameters);}

我重新回去看了下第一节,有点懵,so只能猜了,在app.php里面有这一段

$app->singleton(    Illuminate\Contracts\Http\Kernel::class,    App\Http\Kernel::class);

猜测$kernel = $app->make()的真实类型是App\Http\Kernel,具体请按照以下顺序 查看代码 $app->singleton()->bind()->alias()->make()

0 0
原创粉丝点击