本站的 Laravel 教程对服务容器和服务提供者有介绍吗?
我在前三个教程的目录里搜了一下“服务”,没搜到。不知道是不是分散在教程的各部分了,没有专门讲。我对“我对服务容器的理解”一直不太满意,如果教程里有的话那我会更愿意买。
可能是关键词用错了。框架采用的模式叫“依赖注入”(DI)模式,是“控制反转”(IoC)思想的一种实现方式。你搜索论坛里有很多帖子在解释这个问题,其中我认为比较好的一篇是:博客:Laravel 核心——IoC 服务容器
很多文章比较老了,你可能需要结合最新的文档来看。如果你接触设计模式时间不久也不用对模式的名字太纠结,你只需要知道设计模式是专门为了降低某一类问题代码维护的成本而发明的编码模式。
Route::get()
中的这个Route
它就是个服务,因为它提供了路由相关的东西,或者你在控制器里调用的Request或自定义的Request来验证东西,储如这些都可以被称为”服务“它是由多个Composer组件组成的。PS:至于为什么它可以自己帮你把这个类注入进来,是因为所有编程语言都有一个叫 “反射” 的工具,PHP的容器就会在解析构造函数时帮你自动去找这些依赖,然后再通过反射工具进行分析,如果这个类有其它依赖,就递 归一层层往下的找,直到,它的依赖的依赖的依赖的构造函数没有任务参数就一层一层的返回,直到实例化这个叫UserService的类。然后容器会把这个由反射工具实例化好的UserSerivce放到它的储存数组里,只要在本次生命周期内你的其它地方有调这个UserService类,容器会在它的类数组里找有没有实例化好实例,有就给你返回,没有实例化。
总结:
建议先用用框架,有点基础了再回头看这些概念你就会豁然开朗