Laravel框架的其中一条核心思想是让开发者愉快的开发,所以它的接口做的非常友好,Facade只是一个捷径而已,所有的Facade接口都可以通过依赖注入的方式获取,完全根据开发者的喜好来选择,所以没有什么场景适合用Facade这一说。 Laravel框架的另一条思想是同一件事情,可以有多种做法,举例如下: /** 调用Request服务 */ public function (\Illuminate\Http\Request $request) { /** 三种方式等价 */ $inputs = $request->all(); // 依赖注入(DI) $inputs = \Request::all(); // Facade $inputs= = request()->all(); // 助手方法(helper method) } 至于服务提供器Service Provider什么时候使用,简单解释如下: 如果你的服务(Services)不依赖于其他服务,则不需要服务提供器(Service Provider),你只需通过依赖注入该服务,Laravel的IoC容器会通过PHP的反射服务来实例化该服务。 反而,如果你的服务需要注入其他依赖服务,或者你的服务需要在使用前进行一些初始化的操作(bootstrap),那么这个时候,你就需要在服务提供器(Service Provider)的register方法内将服务绑定到Laravel的IoC容器内,进而在boot方法内,进行初始化操作(bootstrap),这个时候,程序所有的服务都已注册完毕,所以初始化的过程中,还可以调用其他服务。 |
"关于laravel有很多很棒设计,我一直不太明白,Facade和ServiceProvider的应用场景 我一般建立一个Services目录,里面写上UsersService,ArticleServ
最新推荐文章于 2024-05-29 09:36:07 发布