美文网首页PHP
打造 Laravel 优美架构 谈可维护性与弹性设计

打造 Laravel 优美架构 谈可维护性与弹性设计

作者: Gundy_ | 来源:发表于2018-10-15 14:24 被阅读42次

视频:https://www.youtube.com/watch... (有墙各位懂的)
Laravel简单架构:

image.png

简单的小项目可能会把数据库查询,业务逻辑,数据传给View几乎所有操作都放在Controller,如何项目后期需求变大,最后Controller会变得很臃肿,难懂,不易维护(同样,有些会把所有增删改查,功能类写在Model,Controller再从Model一个个的拿,导致Model很乱,Model有关联表的时候可能会引起一些不必要的数据库查询)

我自己的理解:用美宜佳卖商品给客人来理解,主要Controller是某个加盟商美宜佳门店,View是客人,Model是商品制造工厂(理解有些粗糙)

Repository(商品仓库):

跟Eloquent/DB操作相关的,例如增删改查,直接和数据库打交道的基础操作抽出来放在Repository中,repository中文是仓库,我的理解就是我们要从Model拿数据,先放在仓库repository中,统一由仓库管理分配,发挥仓库的职责


image.png image.png

Service(总部服务平台):

商业逻辑,不是简单的查询数据,而是特定的任务,例如判断用户是否是会员,设置用户权限等等,这些操作建议放在Service,之后Controller再调用它


image.png
image.png

个人理解:所以在Controller和Model/Eloquent中间垫两层,如果Repository理解为商品仓库的话,我的理解Service是类似总部内部的服务平台,加盟商Controller需要拿商品给客人View,不能直接去食品工厂Model拿,先通过仓库repository,然后总部服务平台Service进行打包啊,整理啊,发车啊(各种任务),最后再给到加盟商Controller手里

image.png

Presenter(充值业务):

一些比较固定,可以单独调用的,可以用Presenter抽出来,不需要让Model去做,下次修改也单独修改Presenter就行了,
例如时间戳转成Y-m-d H:i:s格式,可以单独用Presenter处理后用@inject插入到前端模板,而不是把转化过程写在模板上面


image.png
image.png
image.png

个人理解:所以在Controller和View中间可以加一层Presenter,我的理解有点类似:美宜佳商户(Controller)可以给客人(View)充公交卡,这种小事不需要劳费工厂(Model)

image.png

Transformer(快餐小吃人工筛选):

转换器,例如在仓库repository中有一个获取所有用户信息的查询操作:
this->user->all();但有些地方我们不需要用到那么多个字段,我只想有name和email字段,难道我要去改all()里面的参数,变成this->user->all(['name','email'])?这样另外的地方又要全部字段,这不就冲突了?这时候Transformer就有用了,其实原理是对$this->user->all()获得的数据进行筛选后再输出,加了个筛选器。

image.png
image.png
image.png

之后要修改结果字段就直接在transform修改即可,当然还可以额外添加需要的字段:array_set()


image.png

个人理解:这一块我的理解就是有些客人需要点一些快餐,例如美宜佳里面的车仔面呀,烤肠呀,在卖出商品的时候需要根据客人的需求对小吃进行筛选再卖出去,不可能客人指点要一个烤肠,你把店里全部小吃拿给他,让他自个去筛选,中间卖出去的时候需要Transformer进行筛选再给出商品

image.png

Formatter(包装):

主要用于保持API返回格式的一致(使用方法和transform类似):


image.png
image.png
image.png

个人理解:Formatter这一块我的理解就是商品包装,客人买东西,买小吃,你需要对商品先进行包装,当然这个包装肯定需要保持一致

image.png

以上便是我再看完视频后对其进行总结整理,当然理论的说的容易,实际操作起来还有很多未知的问题,还是需要后面继续研究学习。

文章原地址https://segmentfault.com/a/1190000016298581

相关文章

  • 打造 Laravel 优美架构 谈可维护性与弹性设计

    视频:https://www.youtube.com/watch... (有墙各位懂的)Laravel简单架构: ...

  • App架构设计

    App架构设计经验谈:技术选型 App架构设计经验谈:接口的设计 App架构设计经验谈:数据层的设计 App架构设...

  • Android App的设计架构:MVC,MVP,MVVM与架构

    Android App的设计架构:MVC,MVP,MVVM与架构经验谈1. 架构设计的目的1.1 通过设计使程序模...

  • keeganlee 谈 App 架构设计

    目录: App架构设计经验谈:接口的设计 App架构设计经验谈:技术选型 App架构设计经验谈:数据层的设计 Ap...

  • 架构师软件设计目录

    UML建模 设计模式 架构模式 功能性设计 性能设计 可用性设计 可靠性(容错性)设计 可维护性设计 可扩展性设计...

  • iOS应用架构谈 开篇[转]

    iOS应用架构谈 开篇iOS应用架构谈 view层的组织和调用方案iOS应用架构谈 网络层设计方案iOS应用架构谈...

  • 智慧医疗 - 微服务最佳实践

    01 产品分析与定位 02 微服务架构设计 以业务为中心 高内聚低耦合 高度自治 弹性设计 日志与监控 自动化 0...

  • ios资料整理

    架构 iOS应用架构谈 开篇 iOS应用架构谈 view层的组织和调用方案 iOS应用架构谈 网络层设计方案 iO...

  • iOS应用架构谈 开篇

    iOS应用架构谈 开篇 iOS应用架构谈 view层的组织和调用方案iOS应用架构谈 网络层设计方案iOS应用架构...

  • 浅谈架构-----目录

    浅谈架构——引言 浅谈架构——面向对象 谈架构——文档下载的设计实现

网友评论

  • 306482d82bc6:跟我的现在ci的模式一样,也是service和responce,但是感觉还是很繁琐

本文标题:打造 Laravel 优美架构 谈可维护性与弹性设计

本文链接:https://www.haomeiwen.com/subject/krefzftx.html