194 laravel 源码分析-1
来源:互联网 发布:网络代写小说招聘 编辑:程序博客网 时间:2024/06/05 18:10
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
数组,
1 0
- 194 laravel 源码分析-1
- laravel中间件源码分析
- 195 laravel 源码分析-2
- 197 laravel 源码分析-4
- Laravel源码分析----CSRF处理
- laravel源码分析(一)
- php laravel 源码阅读1
- 新手解读:laravel 框架源码分析(一)
- Laravel 5 配置数据库主从读写分离和源码分析
- Laravel源码分析——一次Http请求到响应
- laravel经典源码
- Laravel 源码解读
- Laravel源码(流程)解析
- laravel源码详解
- Laravel 源码解读
- Laravel目录结构分析
- laravel目录分析
- Laravel框架分析
- stm32f103 Flash 读写
- java基础2--static
- 剑指offer-队列和栈操作
- cf#369-Chris and Magic Square-大模拟+trick
- Spring security配置顺序
- 194 laravel 源码分析-1
- JSPatch 近期新特性解析
- SuperSocket
- 转:oracle-ora 各种sql异常描述以及ora返回值意思
- PHP学习笔记
- Codeforces Round #369 (Div. 2) D DFS
- 友盟第三方登录 QQ 微信 新浪微博 自定义友盟的dirlog
- Redis Sentinel 机制与用法(二)
- apk在线升级