美文网首页
laravel 核心 singleton()方法解析

laravel 核心 singleton()方法解析

作者: youngxs | 来源:发表于2019-03-07 08:34 被阅读0次

    singleton()主要就是调用bind()方法,只不过直接将shared 参数设为true.

    下面进入bind()方法中

    bind()解释

    dropStaleInstances()的作用就是删除$this->instances[$abstract], $this->aliases[$abstract];

    接着判断参数$concrete是否为空,若为空则将$abstract赋值给$concrete

    接着判断$concrete是否为闭包函数,若不是则将$concrete生成一个闭包函数

    下面看getClosure()是如何生成闭包函数的

    闭包函数的生成

    可以看到,该方法中,直接返回一个闭包函数,至于$container,$parameters不用先考虑, 因为在使用该闭包的时候会将参数传递进去,其中make()方法中就有该闭包函数的参数传递。

    接下来就是$this->bindings[$abstract] = compact('concrete', 'shared');

    这也是最关键的一步,将该闭包函数,和shared 赋值给$this->bindings[$abstract],这一步就是所谓的绑定。

    接着就是判断$this->resolved($abstract)

    若是为true则执行rebound()

    make方法就不先介绍了,到时候专门在做解释

    相关文章

      网友评论

          本文标题:laravel 核心 singleton()方法解析

          本文链接:https://www.haomeiwen.com/subject/gfdpuqtx.html