文章详情

短信预约-IT技能 免费直播动态提醒

请输入下面的图形验证码

提交验证

短信预约提醒成功

Laravel控制反转有哪些好处

2023-07-02 00:58

关注

这篇文章主要介绍了Laravel控制反转有哪些好处的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇Laravel控制反转有哪些好处文章都会有所收获,下面我们一起来看看吧。

在Laravel中,控制反转的好处是能够借助IOC容器将具有依赖的模块或者对象进行解耦,如果指定的服务不合适使用时,不需要修改开发者定义的方法就可以通过指定的接口找一个合适的服务进行替换。

本文操作环境:Windows10系统、Laravel6版、Dell G3电脑。

Laravel控制反转的好处是什么

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

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

关于“Laravel控制反转有哪些好处”这篇文章的内容就介绍到这里,感谢各位的阅读!相信大家对“Laravel控制反转有哪些好处”知识都有一定的了解,大家如果还想学习更多知识,欢迎关注编程网行业资讯频道。

阅读原文内容投诉

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

软考中级精品资料免费领

  • 历年真题答案解析
  • 备考技巧名师总结
  • 高频考点精准押题
  • 2024年上半年信息系统项目管理师第二批次真题及答案解析(完整版)

    难度     813人已做
    查看
  • 【考后总结】2024年5月26日信息系统项目管理师第2批次考情分析

    难度     354人已做
    查看
  • 【考后总结】2024年5月25日信息系统项目管理师第1批次考情分析

    难度     318人已做
    查看
  • 2024年上半年软考高项第一、二批次真题考点汇总(完整版)

    难度     435人已做
    查看
  • 2024年上半年系统架构设计师考试综合知识真题

    难度     224人已做
    查看

相关文章

发现更多好内容

猜你喜欢

AI推送时光机
位置:首页-资讯-后端开发
咦!没有更多了?去看看其它编程学习网 内容吧
首页课程
资料下载
问答资讯