位置: 编程技术 - 正文

Laravel中服务提供者和门面模式的入门介绍(laravel 微服务架构)

编辑:rootadmin

推荐整理分享Laravel中服务提供者和门面模式的入门介绍(laravel 微服务架构),希望有所帮助,仅作参考,欢迎阅读内容。

文章相关热门搜索词:laravel 服务容器,laravel服务提供者,laravel服务提供者,laravel服务提供者,laravel服务提供者,laravel 服务容器,laravel服务提供者,laravel 服务,内容如对您有帮助,希望把文章链接给更多的朋友!

前言

在laravel中,我们可能需要用到自己添加的类时,可以建立一个文件夹专门存放类文件,也可以使用laravel的服务提供者的方式来使用。

这两者其实区别不大,主要是前者使用的话,会跟业务代码产生依赖,想象一下,如果一个控制器之中引用了很多自定义的类文件的话,那么可以想像会产生多少依赖,所以我们可以使用服务提供者的方式,向laravel的容器内注册类,这样的话,就能够在一个单独的配置文件里面来管理依赖,逻辑和后期维护也会方便不少。

使用门面主要是可以不需要去实例化类,可以使用静态方法的方式去访问类的方法,用起来也比较方便,不过这样其实也有缺点,比如不能够直接跳转到对应的方法内部,也不能直观的去了解这个方法的用法,个人开发可能影响不大,不过如果团队开发的,其实用起来可能会让人有点晕晕的吧。

以 Laravel 自带的文件系统为例,在 config/app.php 的配置文件的 providers 数组中,注册了一个服务提供者:

在 alias 数组中定义了一个门面:

通过这两个步骤,我们就可以非常方便的使用 Laravel 提供的文件系统相关的操作,而且调用形式很简洁,如:

File::exist($path) ,判断文件是否存在。 File::get($path, $lock = false) ,获取一个文件的内容。 File::append($path, $data) ,把内容追加到一个文件末尾。 File::files($directory) ,获取一个目录下所有文件。

那么这是如何做到的呢?下面分别讲一讲 Laravel 的服务提供者和门面模式。

服务提供者

先看看定义:

服务提供者是所有 Laravel 应用程序启动的中心所在。包括你自己的应用程序,以及所有的 Laravel 核心服务,都是通过服务提供者启动的。

Laravel中服务提供者和门面模式的入门介绍(laravel 微服务架构)

在文件系统这个服务提供者中,位置 /vendor/laravel/framework/src/Illuminate/Filesystem/FilesystemServiceProvider.php,register 方法可以看到绑定了一个单例:

这个单例是 Filesystem 这个类的单例模式。当然,这个服务提供者中也可以绑定其他的单例,或做更多的事情。我们这里只研究 File::exist() 这种调用方式的原理。

那么这样一来就有个 files 的单例,实际上是 Filesystem 这个类的实例。

此时,如果没有 Facade,也是可以调用到 Filesystem 这个实例的方法的,那就是这样调用:

好了,现在开始讲 Facade.

Facade 门面模式

先看下简介:

Facades /f&#;&#;säd/ 为应用程序的服务容器中可用的类提供了一个「静态」接口。Laravel 自带了许多的 facades,可以用来访问其几乎所有的服务。Laravel facades 就是服务容器里那些基类的「静态代理」,相比于传统的静态方法调用,facades 在提供更简洁且丰富的语法的同时,还有更好的可测试性和扩展性。

本文一开始讲到 alias 数组定义了一个 File,具体的类是

它的内容是:

它实际上返回了一个名称,注意这个名称 files,不就是刚刚绑定的单例模式的名称吗?没错。

这样一来,就可以使用 File 这个别名或者说门面,来调用这个 Filesystem 实例中的方法了。

通过本文,希望大家能够了解服务提供者,Facade,和实际调用的类的实例之间的关系。

总结

标签: laravel 微服务架构

本文链接地址:https://www.jiuchutong.com/biancheng/275750.html 转载请保留说明!

上一篇:使用 laravel sms 构建短信验证码发送校验功能(使用权资产)

下一篇:浅谈使用 Yii2 AssetBundle 中 $publishOptions 的正确姿势(浅谈使用链式管理加强特殊监管场所)

  • 个人出租商用房税率
  • 企业收到财政局退款需要开票吗
  • 收入能加在库存上吗
  • 建筑公司跨区域迁入
  • 用友项目核算科目的项目不能为空
  • 免抵退税申报资料情况表在哪下载
  • 个人收到利息要交增值税吗为什么
  • 所有者投入的资本属于什么科目
  • 建筑业一般计税税率
  • 机器配件作价卖掉,如何做进项税转出
  • 用盈余公积弥补亏损会影响所有者权益吗
  • 房租本月入账上月的怎么摊销?
  • 结转已完工产品会计分录
  • 待摊费用按照入账金额还是合同金额摊销?
  • 上月工资多计提了怎么调整
  • 公司贷款买车后影响公司收购吗
  • 免税发票有几种类型
  • 车船税不开票吗?
  • 个体户收入总额是含税还是不含税
  • 培训学校税收筹划
  • 定期定额征收适用范围
  • 收到个税手续费返还现金流量表
  • 退了货的发票还能用吗
  • 土地无形资产摊销年限怎么确定
  • 同一控制亏损企业怎么算
  • 关于积分的三种账务处理方法
  • 快速迅雷
  • 会务费如何入账
  • 无u刷bios一直闪
  • 民间非盈利组织会计信息的使用者
  • 计算机怎么设置长亮
  • yoosee怎么安装
  • mac笔记本装了双系统后打开苹果系统和原来一样吗
  • 抵债资产账务处理程序
  • macOS Big Sur 11.2 公测版 beta 1怎么更新?
  • php数据表
  • 结转销售原材料会计分录
  • 模态框无法弹出
  • php23种设计模式
  • mybitas分页
  • 资产减值损失和存货跌价准备有什么区别
  • auto系列软件
  • 年报写歇业 可以写多久
  • 在发生以下的情况下,可判定货物
  • 合伙企业的经营所得税率
  • php安装步骤
  • 库存盘点问题及改善对策
  • 错开发票所需要提供的资料和时效要求是?
  • 普票需要填写全额发票吗
  • 偿还银行贷款利息计算
  • PostgreSQL教程(十八):客户端命令(2)
  • 企业给灾区捐款可以抵税吗
  • 2023年终奖一次性扣税对照表
  • 无偿调入的固定资产其贷方应计入
  • 应付职工薪酬的二级科目都有哪些
  • 买车进项税
  • 完税凭证是什么样子
  • 公司交社保有什么用处
  • 小企业汇算清缴补税会计分录
  • 进货时的运费计入什么
  • 上个月进项发票在哪查询
  • 非在职人员和其他人员的区别
  • 小规模汽车维修管理制度
  • 在途物资材料采购原材料的区别
  • 营业外收入计入哪里
  • sqlserver 复制表 保留默认值
  • win10 mysql 5.6.35 winx64免安装版配置教程
  • 数据库 mysql
  • window怎么样
  • window如何恢复系统
  • 双系统卸载deepin
  • win7总是弹出广告怎么办
  • js信息框
  • Extjs中使用extend(js继承) 的代码
  • linux中tar命令
  • macbookair安卓系统怎么切换到苹果
  • 中国税务主旨是什么?
  • 广东国税局发票查询平台
  • 地税全国联网了吗
  • 个人所得税全员申报什么时候开始的
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

    网站地图: 企业信息 工商信息 财税知识 网络常识 编程技术

    友情链接: 武汉网站建设