194 laravel 源码分析-1

原创 2016年08月30日 17:56:34

Illuminate\Foundation\Application


从make方法说起

一、make()

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

1.getAlias()

make()首先调用了这个方法

if (! isset($this->aliases[$abstract])) {
    return $abstract;
}

return $this->getAlias($this->aliases[$abstract]);

如果注册过那么递归调用自身直到返回的value是没注册过的;如果没注册,那么直接返回参数

2.loadDeferredProvider()

这里是关于另外一个叫做 $this->deferredServices的注册表,做什么的未知,看名字应该是和延迟加载有点关系的.

if (! isset($this->deferredServices[$service])) {
    return;
}

$provider = $this->deferredServices[$service];

if (! isset($this->loadedProviders[$provider])) {
    $this->registerDeferredProvider($provider, $service);
}

没注册过返回null,如果注册过那么取出value值(称为provider),这里出现了第三个注册表$this->loadedProviders。如果provider值未注册过,那么调用registerDeferredProvider()方法

2.1 registerDeferredProvider()

service => Providers

if ($service) {
    unset($this->deferredServices[$service]);
}

先unset掉service表中的一对service => provider

$this->register($instance = new $provider($this));
2.1.1 register
if (($registered = $this->getProvider($provider)) && ! $force) {
    return $registered;
}

如果是非强制注册且此provider已经注册过,那么直接返回

if (is_string($provider)) {
    $provider = $this->resolveProviderClass($provider);
}

这里的 resolveProviderClass()方法,只有一行代码 return new $provider($this);,将$this实例传入provider,作用未知。回到register()

$provider->register();

调用provider自身的register()

$this->markAsRegistered($provider);

此处会注册$this->serviceProviders$this->loadedProviders数组,

版权声明:本文为博主原创文章,未经博主允许不得转载。

laravel中间件源码分析

转载自:http://www.cnblogs.com/z1298703836/p/5241541.html laravel中间件源码分析 在laravel5.2中,HTTP 中间件...
  • xiao_tommy
  • xiao_tommy
  • 2016年11月24日 08:19
  • 457

新手解读:laravel 框架源码分析(一)

众所周知,php的框架数不胜数,近几年,一个以优雅著称的框架,渐渐被国内phper所知道,并且开始使用,但是larave有一个很明显的缺点就是,他的文档内容少的可怜。而且国内的社区也不是很活跃。所以对...
  • jackqth
  • jackqth
  • 2016年11月06日 11:48
  • 5279

Laravel源码解析一 【请求的生命周期】

不BB,直接开始。 看一个框架的源码,第一步我们先看入口文件。 laravel的入口文件在public目录下的index.phprequire __DIR__.'/../bootstrap/aut...
  • u013705066
  • u013705066
  • 2017年01月04日 15:51
  • 1949

Laravel 源码解读

本文转载于:http://yuez.me/laravel-yuan-ma-jie-du/?utm_source=tuicool&utm_medium=referral Laravel 源码解读 ...
  • u011816231
  • u011816231
  • 2016年07月06日 14:18
  • 13266

laravel字段自增/自减

DB::table('users')->increment('votes'); DB::table('users')->increment('votes', 5); DB::table('user...
  • qq_33769766
  • qq_33769766
  • 2017年01月19日 09:37
  • 7691

laravel 报错 laravel Undefined offset: 1

laravel 报错 laravel Undefined offset: 1  国外文章比较多,后来分析原因是foreach解析问题,仔细查看 @foreach ($user->posts as $...
  • fjnjxr
  • fjnjxr
  • 2017年07月18日 18:04
  • 872

异常空格,ASCII (194,160)问题

今天遇到了个异常空格的问题,与:http://www.cnblogs.com/wangyuyu/p/3711887.html 一致。 写了两行hive语句,看起来完全一样,但是就是一个可以执行,一个...
  • arthur503
  • arthur503
  • 2015年10月15日 21:06
  • 792

使用laravel5.5 时遇到Undefined offset: 1的问题

laravel5 自带辅助函数 array_only 解决数组"Undefined offset: 1"问题
  • LasseSim
  • LasseSim
  • 2017年10月17日 20:36
  • 344

194

1
  • u011394059
  • u011394059
  • 2017年08月12日 19:26
  • 76

opencart 源码解析

opencart入口文件及启动流程解析
  • dabao1989
  • dabao1989
  • 2014年03月14日 09:16
  • 2700
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:194 laravel 源码分析-1
举报原因:
原因补充:

(最多只允许输入30个字)