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

file

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

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

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

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

本帖已被设为精华帖!
本帖由 Summer 于 7年前 加精
《L03 构架 API 服务器》
你将学到如 RESTFul 设计风格、PostMan 的使用、OAuth 流程,JWT 概念及使用 和 API 开发相关的进阶知识。
《L02 从零构建论坛系统》
以构建论坛项目 LaraBBS 为线索,展开对 Laravel 框架的全面学习。应用程序架构思路贴近 Laravel 框架的设计哲学。
讨论数量: 30
Summer

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

7年前 评论

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

7年前 评论

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

大家有什么看法

7年前 评论

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

7年前 评论

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

7年前 评论

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

7年前 评论

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

7年前 评论

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

7年前 评论

赞!总结得不错

7年前 评论

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

7年前 评论

cache放哪里比较合适呢

6年前 评论

@Summer cache放哪里比较合适呢

6年前 评论
Summer

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

6年前 评论

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

5年前 评论

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

5年前 评论

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

5年前 评论

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

5年前 评论

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

5年前 评论

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

5年前 评论

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

5年前 评论

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

5年前 评论

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

5年前 评论
qiuyuhome

地址 404.

5年前 评论
qiuyuhome

file

5年前 评论
HACK_QC

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

5年前 评论

无法访问了,可否发下最新的地址

4年前 评论

@Adminwj 应该是github blog ,如果你能访问github就能看

4年前 评论

翻墙后可以了哈,多谢分享

4年前 评论

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!