2017年10月9日18:42:53
laravel核心说明: http://laravelacademy.org/post/769.html
总结: 本质上是一个工厂模式:
1. 容器类($app)里有两个数组, 一个是$instances 用来存放实例化的对象
另一个是$binds, 存放匿名函数的数组, 这是一个关联数组, 其中匿名函数用来生成上边数组里的对象, 然后通过键名用来获取这些实例类($app->make('redis'))
2. $binds 数组是需要手动添加元素的, 通过 $app->register('服务提供者的类名ServiceProvider'), 这个类里的某些函数会去往$binds数组中添加元素
3. 门面: 就是利用PHP的__callStatic()魔术方法, 把原来先new在调用的写法转化为 类名::方法名()
其他参考:
服务提供者: https://segmentfault.com/q/1010000004640866/
服务提供者: http://laravelacademy.org/post/796.html
中间件: http://laravelacademy.org/post/6340.html