构建方法传入整个项目根目录路径(public文件夹上一级)将其设为基础路径(存在本类basePath属性中)。
__construct > setBasePath > bindPathsInContainer 在容器中绑定路径
 
bindPathsInContainer > instance 在容器中注册已有实例
{
$this->removeAbstractAlias($abstract);这个方法先删除了容器中的对应实例别名
(abstractAliases与aliases有区别,存疑)
$this->rebound 然后如果该键名在bindings属性instances属性aliases属性中任意一个存在,
则运行之前注册该实例时绑定的回调函数进行更新
$this->instances[$abstract] = $instance 最后将路径添加至instances属性
}
 
__construct > registerBaseBindings
{
static::setInstance($this)将application实例注册至Container抽象基类使其全局可用
将Illuminate\Container\Container绑定为application类
绑定了PackageManifest类,vendor路径与bootstrap/cache/packages.php里的服务提供者路径
}
 
__construct > registerBaseServiceProviders 注册了event、日志、路由的服务提供者
传入相应的provider实例,并调用其register方法,将application实例传入provider作为参数进行回调。
RoutingServiceProvider在实例化的时候,又注册了router、urlGenerator、redirector、request、response、dispatcher等类的实例。
将已注册的provider进行标记$this->serviceProviders、$this->loadedProviders[get_class($provider)]
最后追踪到container类的bind方法,也只是把回调函数加入了bindings属性,并设置了是否共享而已
$app->singleton
__construct > registerCoreContainerAliases 将核心类路径存入$this->aliases(别名为键,类名为值)与$this->abstractAliases(类名为键,路径组成的数组为值)中,保存别名

laravel5.5源码阅读草稿——application的更多相关文章

  1. laravel5.5源码阅读草稿——路由

    laravel 里的路由是由RouteServiceProvider提供的,其中的boot方法为启动项,调用了父类的boot方法. RouteServiceProvider中的boot方法设置了自己与 ...

  2. laravel5.5源码阅读草稿——入口

    laravel的启动需要通过路由.中间件.控制器.模型.视图最后出现在浏览器.而路由.中间件.模型,这些功能都有自己的类,比如Route::any().DB::table().$this->mi ...

  3. 【原】AFNetworking源码阅读(五)

    [原]AFNetworking源码阅读(五) 本文转载请注明出处 —— polobymulberry-博客园 1. 前言 上一篇中提及到了Multipart Request的构建方法- [AFHTTP ...

  4. 【原】AFNetworking源码阅读(四)

    [原]AFNetworking源码阅读(四) 本文转载请注明出处 —— polobymulberry-博客园 1. 前言 上一篇还遗留了很多问题,包括AFURLSessionManagerTaskDe ...

  5. 【原】AFNetworking源码阅读(三)

    [原]AFNetworking源码阅读(三) 本文转载请注明出处 —— polobymulberry-博客园 1. 前言 上一篇的话,主要是讲了如何通过构建一个request来生成一个data tas ...

  6. 【原】AFNetworking源码阅读(二)

    [原]AFNetworking源码阅读(二) 本文转载请注明出处 —— polobymulberry-博客园 1. 前言 上一篇中我们在iOS Example代码中提到了AFHTTPSessionMa ...

  7. 【原】SDWebImage源码阅读(五)

    [原]SDWebImage源码阅读(五) 本文转载请注明出处 —— polobymulberry-博客园 1. 前言 前面的代码并没有特意去讲SDWebImage的缓存机制,主要是想单独开一章节专门讲 ...

  8. [Erlang 0119] Erlang OTP 源码阅读指引

      上周Erlang讨论群里面提到lists的++实现,争论大多基于猜测,其实打开代码看一下就都明了.贴出代码截图后有同学问这代码是哪里找的?   "代码去哪里找?",关于Erla ...

  9. CI框架源码阅读笔记8 控制器Controller.php

    最近时间有些紧,源码阅读系列更新有些慢.鉴于Controller中代码比较少,本次Blog先更新该文件的源码分析. 在经过路由分发之后,实际的应用Controller接管用户的所有请求,并负责与用户数 ...

随机推荐

  1. 数据迁移:MSSQL脚本文件过大,客户端没有足够的内存继续执行程序

    在CMD窗口(俗称:黑屏程序) 下输入 SQLCMD 命令 命令格式如下: sqlcmd -U 用户名   -P 密码    -S 服务器地址   -d 数据库名称  -i  你的脚本文件.sql ( ...

  2. 实战:Nginx如何让用户通过用户名和密码认证访问WEB站点

    有时我们会有这么一种需求,就是你的网站并不想提供一个公共的访问或者某些页面不希望公开,我们希望的是某些特定的客户端可以访问.那么我们可以在访问时要求进行身份认证,就如给你自己的家门加一把锁,以拒绝那些 ...

  3. Java学习-0

    Java简单介绍 第一个程序Hello World 基本数据类型 对象和类 数据声明 函数声明 参数传递 Java简单介绍 Java的优点:简单.可移植性 JDK (Java Development ...

  4. winform ComboBox控件反选

    winform ComboBox控件反选:int index = comboBox1.FindString(textBox2.Text); comboBox1.SelectedIndex = inde ...

  5. sql语句 查询分组后的每组的第一条或最后一条数据

    select * from(select row_number() over(partition by IDCARD order by DATATM desc) as rownum,* from (S ...

  6. iOS设计模式 - 外观

    iOS设计模式 - 外观 原理图 说明 1. 当客服端需要使用一个复杂的子系统(子系统之间关系错综复杂),但又不想和他们扯上关系时,我们需要单独的写出一个类来与子系统交互,隔离客户端与子系统之间的联系 ...

  7. itertools 迭代

    itertools模块提供的全部是处理迭代功能的函数,它们的返回值不是list,而是Iterator,只有用for循环迭代的时候才真正计算. >>> import itertools ...

  8. 给腾讯云Linux主机创建Swap文件

    新买的腾讯云主机没有提供Swap分区 理由是由于主机经常因为内存使用率过高,频繁使用Swap,导致磁盘IO过高,服务器整体性能反而下降. 不过用户依然可以使用Swap文件的方式添加Swap. 方法如下 ...

  9. 【2017-11-08】Linux与openCV:opencv版本查看及库文件位置等

    1. 查看当前系统中opencv的版本: pkg-config --modversion opencv 可以看到系统中目前存在opencv2.4.9.1及opencv3.2.0两个版本. 不太清楚op ...

  10. vue怎么不通过dom操作获取dom节点

    今天写一个公众号的项目,写了一个vue的搜索组件,点击搜索框时,背景出现一个遮罩,代码结构如下: template:`<div class="searchBar-div"&g ...