首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >MVC的目录结构

问MVC的目录结构
EN

Stack Overflow用户
提问于 2011-11-01 04:58:42
回答 5查看 36.8K关注 0票数 16

我正在努力清理我一直在做的框架。目前,该站点由以下目录组成:

代码语言:javascript
复制
Models
Views
Controllers
Helpers (Miscellaneous functions)
Libraries (Universal classes, like library and session management)
Images
Style

每当调用页面时,路由器脚本都会查找相关的控制器,因此ite.com/ Login_Controller会在“/controllers/login.php”中将登录实例化。我面临的问题是,路由器脚本本身感觉像是一种控制器,view.php也是如此,它处理要由适当视图处理的格式化数据。但它们不太像页面控制器,因为它们控制着MVC本身。我对这个架构还是比较陌生的,我很好奇有更多经验的人会如何组织这个架构。

我是否可以将路由器和视图控制器归类为库,或者在/controllers中创建一个名为“pages”的子目录更好,或者其他任何想法?非常感谢。

EN

回答 5

Stack Overflow用户

回答已采纳

发布于 2011-11-01 06:22:40

我建议遵循Symfony 1.x目录结构。清晰,逻辑,安全。

节选自Fabien Potencier和Fran的书:

代码语言:javascript
复制
apps/
  frontend/
  backend/
cache/
config/
data/
  sql/
doc/
lib/
  model/
log/
plugins/
test/
  bootstrap/
  unit/
  functional/
web/
  css/
  images/
  js/
  uploads/

  • apps/包含项目的每个应用程序的一个目录(通常,前端和后端的前端和后端office).
  • cache/包含配置的缓存版本,以及(如果激活它)项目的操作和模板的缓存版本)。缓存机制(详见第12章)使用这些文件来加速对web请求的响应。每个应用程序都会有一个子目录在这里,包含预处理的PHP和HTML保存的project.
  • data/的一般配置在这里,你可以存储项目的数据文件,像一个数据库模式,一个SQL文件,创建表,甚至一个file.
  • doc/数据库存储项目的文档,包括你自己的文档和PHPdoc.
  • lib/生成的文档专用于外来的类或库。在这里,您可以添加需要在应用程序之间共享的代码。模型/子目录存储项目的对象模型(在8).
  • log/存储由symfony直接生成的适用日志文件一章中描述)。它还可以包含web服务器日志文件、数据库日志文件或来自项目任何部分的日志文件。Symfony为每个应用程序和每个环境创建一个日志文件(日志文件在16).
  • plugins/存储安装在应用程序中的插件一章中讨论)(插件在17).
  • test/一章中讨论)包含用PHP编写的单元和功能测试,并与symfony测试框架兼容(在第15章中讨论)。在项目设置期间,symfony会自动添加一些存根,并将一些基本的tests.
  • web/作为web服务器的根。只有位于此目录中的文件才能从互联网访问。
票数 10
EN

Stack Overflow用户

发布于 2011-11-01 07:23:40

我建议您研究一下框架的目录结构,比如symfony2或yii

以下是我为我的选择:

代码语言:javascript
复制
public_html/              (for public files) (should be public, place only index.php in here)
public_html/css/
public_html/images
public_html/js            (for your js files, or custom generated ones)
lib/                      (for my libs)  (should be private)
lib/vendor/               (for 3rd party libs)
application/              (for the whole app) (should be private)
application/class         (classes that make the app work such as mainApp, Controller, Model, View, etc...)
application/class/model   (all the models)
application/class/view    (all the views)
application/class/view/html (templates used by the views)
application/class/controller (all controllers)
application/class/helper  (helper functions)
application/class/lib     (libs that you develop for the application)
application/template      (layout and/or templates for the application)
application/conf          (config files)
application/log           (log files)
application/cron          (scheduled jobs)
application/database      (for database migration scripts)
...

您还可以使用文件命名约定,例如:类的命名规则为YourClassName.class.php,视图的命名规则为YourView.phtml,等等。查看框架,您将了解如何良好地构建和应用程序。

票数 20
EN

Stack Overflow用户

发布于 2011-11-01 05:16:23

我不会称自己为专家,但一种解决方案是将您的“框架”从实现中移走。我的意思是将你的“路由器”、“view.php”和其他框架类移动到某个外部位置,然后将其包含在index.php或其他文件中作为访问点。

然后,只有内容将在您的实际应用程序目录中,而所有框架文件将位于无法通过web服务器访问的位置。

这只是一个想法:)

票数 6
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/7959673

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档