foxriver123

6611 经验值

如果返回的是array,后续对数据的处理就会捉襟见肘

注册全局作用域的时候,传入了一个不带有全局作用域的eloquentBuilder,在制造这个不带全局作用距的eloquentBuilder的时候调用了一次with方法,这个时候with还是空所以

要看在ServiceProvider里register方法里面用的是bind还是singleton,如果是bind每次都new,如果是singleton就是单例。单例只实例化一次

是完全可以的。但是这种做法是不规范的,如果所有东西都放一个文件,会显得很乱。没有良好的分类,维护起来是一个灾难!
不延迟加载的ServiceProvider在框架引导过程中就会实例化.延迟加载的ServiceProvider会在你用到他提供的服务的时候被实例化!

不用,因为容器可以用PHP反射帮你解析

教主说的很对。至于看源码,个人感觉要花时间来沉淀,至少我在看中间件装饰者模式设计的管道哪里卡了很久!痛并快乐着。(拨洋葱有兴趣可以研究下很有意思)

个人感觉。它的实现归功容器的bindings这个数组。这个bindings更像是一个机床。帮laravel生产各种对象。

首先你需要定义一个helper function

function abc(){
   return app()->make('abc'); //或者 return app('abc'); 方法有很多。教主有讲
}

接着定义一个AbcServiceProvider的类在他的register方法里面

public function register(){
  $this->app->bind('abc',function(){
    return new Abc();
 });
}

把这个ServiceProvider加入到app里面那个ServiceProvider数组里面就可以了

太可惜了,教主。你就这样离我们而去! 哎。