首页 >

Laravel控制反转的好处是什么

php框架|LaravelLaravel控制反转的好处是什么
Laravel
php框架-Laravel
桌面列表右面文章html源码,ubuntu只能游客登录,rstudio如何网页爬虫,php发送push,苏七seolzw
本文操作环境:Windows10系统、Laravel6版、Dell G3电脑。
飞驴挂机源码,开机ubuntu界面卡住,用户画像爬虫,amr php,seo开词lzw
Laravel控制反转的好处是什么
企业互联源码,ubuntu内存使用限制,xpath全栈爬虫,php 替换/,帽子谈SEOlzw
laravel 自己本身就是一个IOC容器,也叫服务容器,

服务容器就是管理类的依赖和执行依赖注入的工具

控制反转的作用就是实现模块或对象的解耦,通过借助第三方将具有依赖的模块或对象进行解耦,而这个第三方,就是IOC容器。

容器嘛,就是储存了需要的服务在里面,方便开发者调用。所以,Laravel为了方便管理这些服务(实现解耦)决定,不再直接调用这些服务,例如开发者定义了一个方法1,原本和服务B绑定,通过服务B实现,现在不要B了,而是定义了一个接口A,通过接口A去实现这个服务B。

在这个过程中,服务B本来可以控制开发者的某个功能,现在开发者不直接调用这个服务了,而是换成了接口A,所以,该服务B对该项功能失去了控制权,而接口A获得了该功能的控制权,这个过程就叫做控制反转

好处就在于

如果该服务B不合适了,那么接口A可以找一个适合需求的其他服务替换上去,不用修改开发者的方法1,至于你接口A用的啥服务,我这方法也不用管。这个接口A要实现服务B,那实现服务B的类就得继承这个接口A,在这个B类中实现接口A定义的抽象方法。

这个接口A 也可以被看作该项服务的提供者。laravel中有多个服务提供者,他们组成相应的组件,多个组件形成这样一个laravel框架

既然接口A有了,接口BCDE那么多,要方便管理,就得给规定服务提供者的格式,方法参数,来约束他们的规则,这个概念就叫做:契约

契约的好处:就在于,只要满足约束规则,就可以按需求随意替换,

**Facades,**我们可以叫做门面,其实就是一组静态接口或者代理,能让开发者简单的访问绑定到容器中的各种服务。Laravel 里面自带了一些 Facades,如Cache等。一个 Facade 就是一个类,使用这个类可以访问到来自容器里的一个对象,这个功能就是在 Facade 类里面定义的。Laravel 的 Facades 还有任何你自己定义的 Facades,都会去继承 Facade 这个类。通俗来说,你在类上方使用的use xxxx 都属于门面,详情看链接:https://www.jianshu.com/p/a96715975d4e

那么,如果我要实现的服务这里没有怎么办,那就需要将新来的服务进行注册和初始化,只有注册到容器中了,容器才能调用它,这个工作由服务提供者来实现。回归正题

那依赖注入是什么:开发者的这个方法1,定义了一个中间商接口A,这个接口A可以以参数形式,注入方法1所属类1的构造方法中 储存起来,这个过程就叫做依赖注入。

只要不是由内部生产(比如初始化、构造函数 __construct 中通过工厂方法、自行手动 new 的),而是由外部以参数或其他形式注入的,都属于依赖注入

我们要如何做依赖注入呢?很简单: $biller = new StripeBiller(new SmsNotifier);

这就是一个依赖注入。账单类 StripeBiller 不用考虑如何通知用户,我们直接传递给它一个通知实现类 SmsNotifier

的实例。从代码角度来说,这可能只是个微小的变动,但这种设计模式的引入,绝对会使你的整个应用架构焕然一新:因为明确指定了类的职责边界,实现了不同层和服务之间的解耦,你的代码变得更加容易维护;此外,从面向接口编程的角度来看,代码变得更加容易测试,你只需通过模拟注入依赖即可,不同类之间的测试完全可以隔离开来


  • 暂无相关文章
  • Posted in 未分类