Laravel 中大型项目面向对象架构
35

file

我认为这是一个非常利于中大型项目维护的设计思想,推荐给大家。

在传统的MVC架构中增加了3层,以使得代码不同的代码分离。

应用了php的新特性,依赖注入。

具体论文地址 http://oomusou.io/laravel/architecture/

本帖已被设为精华帖!
本帖由 Summer 于 2年前 加精
《L02 从零构建论坛系统》
以构建论坛项目 LaraBBS 为线索,展开对 Laravel 框架的全面学习。应用程序架构思路贴近 Laravel 框架的设计哲学。
《L04 微信小程序从零到发布》
从小程序个人账户申请开始,带你一步步进行开发一个微信小程序,直到提交微信控制台上线发布。
讨论数量: 27
Summer

图片为啥这么小,好文章 :+1:

2年前

@Summer 改了,好像是hub的图片自动会切割缩小,直接引用人家的大图

2年前

收藏

2年前

有些人 Repository + active record 不好用 :
https://adamwathan.me/2015/02/14/active-repository-is-an-antipattern/

大家有什么看法

2年前

@johndoe 所有的设计模式都是在解决问题,你发的这篇论坛的核心观点是需求很简单的时候主题帖中提到的设计模式其实是在增加工作量且危险的,因为需求很简单,就是给文章添加一个评论,并不涉及其他逻辑,这时候使用这种设计模式就显得画蛇添足了。设计模式一定是在适合的场景下使用的。

2年前

我们的项目:weipeiapp.com也会往这个方向重构和发展

2年前

设计模式终归好,切忌过度设计

2年前

这篇文章我也看过,不错。

2年前

不错的文章,model臃肿已经忍耐太久了

2年前

赞!总结得不错

2年前

符合solid原则 很适合大型项目 要纠结的就是不知道cache是放repo还是service中

2年前

cache放哪里比较合适呢

8个月前

@Summer cache放哪里比较合适呢

8个月前
Summer

@Linz 搭车问问题是不礼貌的行为

8个月前

1、把MVC拆成了!MMVVCC
2、拆的主要目的是解耦
3、写起来并不友好!

6个月前

@li603674060 加入中间层、中间件很多时候目的是解耦和代码防腐。
此架构适用的是大型软件团队开发,如果只是做一个小应用,单体应用那么这个架构就是累赘。
更多分层、分布式、微服务都是解决大型软件和系统遇到的问题,首先你要看清这个架构带给团队什么好处,如果你只是开发个小应用,个人项目不要使用这种架构,因为你的业务都没验证呢谈什么架构呢,快速实现业务为先。

6个月前

@YuxiangDong 1此架构的缓存该怎么处理?2、redis相关的逻辑放在那里?3,model层是不是不用写代码了?4、repo层里面的代码能不能处理多个model?

6个月前

@YuxiangDong 在吗?你用过此架构吗?你们公司的业务架构是什么样子呢?

6个月前

redis看业务把它当做什么用,当做数据库用还是缓存还是队列中间件,但一般应该都在Service。
model按此架构应该建议只对数据进行定义,而不参与业务逻辑,最好能做的随时抽离出去能作为一个独立的数据提供中心。
repository其实是可选的,因为很多数据操作框架是继承一个抽象的repository来提供一些通用的操作数据库的方法,如果不使用这种框架其实这一层可以去掉,当然加上也是为了代码职责更清晰,防止代码腐烂,不过这点是可以人为控制的,所以这层在这个架构里看自己喜好吧。
关于缓存,这个东西太庞大,大型应用从CDN、静态缓存,服务器缓存,页面缓存,HTTP缓存等等,是一个庞大的议题。

6个月前

我司架构属于工作保密内容,只能说我司架构比这还复杂,为的是业务平行扩展和松耦合

6个月前

@YuxiangDong 能方便说下贵公司架构的思想吗?分层大概怎么分的?框架的选择?是否做了前后端完全分离?api的技术选择?

6个月前

@YuxiangDong redis的逻辑放在service也不是太合适的,如果我的项目后期再加了mongodb的话?service太庞大了

6个月前

@li603674060 那你该多看看设计模式,架构和设计模式解决的是不同的问题,你说的这种情况设计模式会有方法来让代码更优雅

6个月前
qiuyuhome

地址 404.

4个月前
qiuyuhome

file

4个月前
HACK_QC

但是现在前后端分离的话感觉那个presenter就没多大必要了,个人感觉

3个月前

  • 请注意单词拼写,以及中英文排版,参考此页
  • 支持 Markdown 格式, **粗体**、~~删除线~~、`单行代码`, 更多语法请见这里 Markdown 语法
  • 支持表情,使用方法请见 Emoji 自动补全来咯,可用的 Emoji 请见 :metal: :point_right: Emoji 列表 :star: :sparkles:
  • 上传图片, 支持拖拽和剪切板黏贴上传, 格式限制 - jpg, png, gif
  • 发布框支持本地存储功能,会在内容变更时保存,「提交」按钮点击时清空
  请勿发布不友善或者负能量的内容。与人为善,比聪明更重要!