0

0

在考虑一个问题,MVC为什么一定要model一个目录,View一个目录……

php中文网

php中文网

发布时间:2016-06-06 20:41:16

|

1305人浏览过

|

来源于php中文网

原创

在考虑一个问题,
MVC为什么一定要Model一个目录,View一个目录,Controller一个目录,
而不是按照模块,放在一个目录里:
比如订单模块:
Order/
OrderController.php
OrderModel.php
OrderList.phtml
OrderEdit.phtml

我觉得这样子 在开发订单模块的时候,
就不需要 一会儿到view目录找order文件夹,再找edit模板。
一会儿 又到model目录找orderModel
……

而且 移动到别的项目的时候 也更方便呀。整个文件夹复制就好了


补充几点真正的好处:
一,比如你新开发了订单模块 要传到服务器,你只需要把Order目录传上去,而不需要 到Controller目录把OrderController.php传上去,再到Model目录……
二,比如你卖软件,文章模块1000块,订单模块3000块……客户要什么模块,只需要把对应的模块目录发给他就好,而不需要传个四分五裂的目录。
三,这个结构 才符合正常人的思维,比如composer,比如npm,都是各个模块有各自的目录,

就好像你要整理你的美女图库,你一定是把 林志玲的放一目录,苍老师的放一个目录,
哪天我找你要苍老师的图片,你把苍老师的目录打包给我就好了。
而现有的大多数PHP框架的作法是把.jpg的 不管林志玲还是苍老师都放一个目录,
然后gif的放一个目录……
这个子的结构 有什么好处?


再拿前端做参考,
项目小的话,或者是古老的做法,就是css一个目录,js一个目录,img一个目录,
但是大一点的项目,还有先进一点的前端工程师,一定是按模块来分的,而不是按照文件类型。

回复内容:

在考虑一个问题,
MVC为什么一定要Model一个目录,View一个目录,Controller一个目录,
而不是按照模块,放在一个目录里:
比如订单模块:
Order/
OrderController.php
OrderModel.php
OrderList.phtml
OrderEdit.phtml

我觉得这样子 在开发订单模块的时候,
就不需要 一会儿到view目录找order文件夹,再找edit模板。
一会儿 又到model目录找orderModel
……

而且 移动到别的项目的时候 也更方便呀。整个文件夹复制就好了


补充几点真正的好处:
一,比如你新开发了订单模块 要传到服务器,你只需要把Order目录传上去,而不需要 到Controller目录把OrderController.php传上去,再到Model目录……
二,比如你卖软件,文章模块1000块,订单模块3000块……客户要什么模块,只需要把对应的模块目录发给他就好,而不需要传个四分五裂的目录。
三,这个结构 才符合正常人的思维,比如composer,比如npm,都是各个模块有各自的目录,

就好像你要整理你的美女图库,你一定是把 林志玲的放一目录,苍老师的放一个目录,
哪天我找你要苍老师的图片,你把苍老师的目录打包给我就好了。
而现有的大多数PHP框架的作法是把.jpg的 不管林志玲还是苍老师都放一个目录,
然后gif的放一个目录……
这个子的结构 有什么好处?


再拿前端做参考,
项目小的话,或者是古老的做法,就是css一个目录,js一个目录,img一个目录,
但是大一点的项目,还有先进一点的前端工程师,一定是按模块来分的,而不是按照文件类型。

那么问题来了,公用的Model、View片段等等怎么办? 单个文件夹拷到另一个项目里直接就work现实吗?单纯为了“找代码”,在代码结构上大动干戈我觉得并不经济。View Model Controller之间能通过IDE的追踪功能可以方便地跳转,或者统一命名,通过名字快速搜索才是解决“找文件麻烦”的好方法

当然如果业务本身庞大到需要类似拆分的时候,这样的拆分也并非完全不合理,但一定要划清边界,理清拆分的规则,理清共同模块的放置方式和维护方式等等

嗯,你说的有些道理,你这样把每个项目都拆分成了一个小的app,每个app都自己的controller model view,这样做是有好处,扩展性极强,但是不是大型的项目就不能体现这种好处,商派的B2C商城ecstore就是楼主说的这样做的,分为很多了app,楼主的思路是对的

野羊分类信息系统
野羊分类信息系统

===更新说明==解决了无法登陆后台的问题!完善了部分功能修复了一个BUG..修改静态模版说明:本系统的首页 和 内容页 不支持动态显示,需要生成HTML(实为.asp文件)模版文件存放在temp目录下index.html为首页模版show.html为内容页模版......=============2007 - 10 - 20 ===========注:1*使用前请务必修改 inc/conn.as

下载

比如order和admin有view是一样的。

View和Model的调用不会完全是一一对应的,当一个View调用多个Model的时候,你就不知道这个View应该写到那个目录了

MVC为什么一定要Model一个目录,View一个目录,Controller一个目录
这句话就不成立,谁规定了mvc就得这样组织代码结构。

另外,题主提到的模块方式,就和pythonweb框架 django 项目代码组织很像,同时 flask的蓝图(blue_print)方式组织代码也值得学习。

相关专题

更多
php源码安装教程大全
php源码安装教程大全

本专题整合了php源码安装教程,阅读专题下面的文章了解更多详细内容。

65

2025.12.31

php网站源码教程大全
php网站源码教程大全

本专题整合了php网站源码相关教程,阅读专题下面的文章了解更多详细内容。

43

2025.12.31

视频文件格式
视频文件格式

本专题整合了视频文件格式相关内容,阅读专题下面的文章了解更多详细内容。

35

2025.12.31

不受国内限制的浏览器大全
不受国内限制的浏览器大全

想找真正自由、无限制的上网体验?本合集精选2025年最开放、隐私强、访问无阻的浏览器App,涵盖Tor、Brave、Via、X浏览器、Mullvad等高自由度工具。支持自定义搜索引擎、广告拦截、隐身模式及全球网站无障碍访问,部分更具备防追踪、去谷歌化、双内核切换等高级功能。无论日常浏览、隐私保护还是突破地域限制,总有一款适合你!

41

2025.12.31

出现404解决方法大全
出现404解决方法大全

本专题整合了404错误解决方法大全,阅读专题下面的文章了解更多详细内容。

204

2025.12.31

html5怎么播放视频
html5怎么播放视频

想让网页流畅播放视频?本合集详解HTML5视频播放核心方法!涵盖<video>标签基础用法、多格式兼容(MP4/WebM/OGV)、自定义播放控件、响应式适配及常见浏览器兼容问题解决方案。无需插件,纯前端实现高清视频嵌入,助你快速打造现代化网页视频体验。

9

2025.12.31

关闭win10系统自动更新教程大全
关闭win10系统自动更新教程大全

本专题整合了关闭win10系统自动更新教程大全,阅读专题下面的文章了解更多详细内容。

8

2025.12.31

阻止电脑自动安装软件教程
阻止电脑自动安装软件教程

本专题整合了阻止电脑自动安装软件教程,阅读专题下面的文章了解更多详细教程。

3

2025.12.31

html5怎么使用
html5怎么使用

想快速上手HTML5开发?本合集为你整理最实用的HTML5使用指南!涵盖HTML5基础语法、主流框架(如Bootstrap、Vue、React)集成方法,以及无需安装、直接在线编辑运行的平台推荐(如CodePen、JSFiddle)。无论你是新手还是进阶开发者,都能轻松掌握HTML5网页制作、响应式布局与交互功能开发,零配置开启高效前端编程之旅!

2

2025.12.31

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号