Laravel文档的Service Container
、Service Providers
两节内容有几个概念搞不太明白:
https://laravel.com/docs/5.2/providers
https://laravel.com/docs/5.2/container
1、什么是bootstrapping?
好像靠反射机制来实现,对反射机制的概念也搞不太明白,反射机制是什么反射给什么,反射了个什么东西?
2、boot()方法:
它的作用是什么呢?
3、register()方法:
把什么注册到什么?是把Service注册到Service Container么?那么这两个东西在哪里呢?假如我自己写一个Service,一般放在什么目录?Service Container是一个可以看得见的文件吗,存放在什么目录呢?
4、bind()方法:
把什么绑定到什么?和前面一样,绑定的双方是什么。
麻烦大神帮解释一下。非常感谢!
bootstrapping是指
Service Provider
的注册启动过程。简单说,就是一个Service Provider
怎么注册进Service Container
,注册事件监听等。boot方法的作用是当
Service Provider
注册进Service Container
并被Service Container
启动后执行的启动代码,做一些初始化的操作。register()方法就是具体的通过调用Container的
bind()
方法实现把Service
绑定到Service Container
的属性上。bind()方法是在
Service Container
的方法,Service Provider
通过这个方法(以及其他类似方法)来执行绑定。在Laravel中,一个
app
就是一个最常见的Service Container
,它本质上是一个对象,通过它的bind
方法,我们可以为他增加一个属性,这个属性就是Service Provider
。但是这个属性的名字等信息怎么来呢,由Service Provider
的register
决定,register
方法里面其实就是确定了provider所绑定在的属性名字。这样一个Service Provider
就注册进了container,当我们需要这个provider执行功能的时候,通过属性名字找到provider,然后启动它,一旦启动,provider先运行它的boot
方法进行初始化,之后开始实现业务,完成整个过程。下面结合Laravel的
Filesystem
的代码分析一下以上过程: