【问题标题】:PHP MVC file structurePHP MVC 文件结构
【发布时间】:2013-08-18 12:10:21
【问题描述】:

我应该如何在 PHP 中的 mvc 设计模式中构建目录,以便能够在不同视图的“后端”和“前端”中使用相同的模型和控制器。

我做了什么

我正在尝试使用 PHP 作为服务器端语言来构建一个网站,并致力于使用 MVC 设计模式。在我的本地主机(xampp)中,我创建了如下文件夹结构:

htdocs -- mvc 
           |---- controllers
           |---- models
           |---- views
           |---- library
           |---- system-admin (backend)
               |___ controllers
               |___ models
               |___ views
               |___ index.php (single entry point - backend)
               |___ .htaccess
           |---- index.php (single entry point - frontend)
           |---- .htaccess

我尝试实现基本的“登录系统”并创建了“Login_Controller”和“Login_Model”文件。

我感到困惑

我怎样才能同时使用backendfrontend 中的“Login_Controller”和“Login_Model”,同时为每个视图使用单独的视图。我的意思是,管理员登录的 url 将是: http://localhost/mvc/system-admin/login/ 和站点用户登录的 url 将是: http://localhost/mvc/login/

我正在使用twitter-bootstrap 框架设计backend,但frontend 的设计将由其他可能不使用我使用过的框架的人完成,因此我需要不同的视图。 backendfrontend 都将共享来自 library 的文件。有些模型和控制器也是共享的(例如 Login_Model 和 Login_Controller),有些不是(例如 Dashboard_Model 和 Dashboard_Contoller 我认为只会在后端使用)。

我需要什么

我需要一些指导来构建我的目录并判断我当前的文件结构。我从未使用过任何设计模式(singleton :-) 除外)或任何 PHP 框架,因此我无法决定如何构建文件。

【问题讨论】:

  • controllers/admin , controllers/users 。然后你可以在你的库中放一些东西来检查用户的角色,然后重定向到相应的控制器上。对于脚本和 css 你可以把它放在mvc/assets
  • 后端和前端是分开的模块,所以它们应该分开controllersviews等文件夹。但是你可以有共同的modelslibraries
  • 登录前如何查看角色。如果有人注册为管理员,那么他将转到http://localhost/system-admin/login,其他人将转到http://localhost/login 登录。我的任务是使用同一个控制器(Login_Controller)显示不同的登录页面(视图)。以及如何?
  • 感谢您的评论,我会按照您的建议尝试多个控制器,谢谢。
  • 这里有一个提示:不要放入您不希望用户打开的DOCUMENT_ROOT 文件。您的大部分应用程序应位于DOCUMENT_ROOT 之外。此外,模型不是一个类。模型是一个层。

标签: php directory-structure application-design


【解决方案1】:

一般来说,我会设置您的 MVC 项目如下: 文件夹结构 /前端/控制器 /前端/模型/ /前端/视图/ /backend/[与前端相同] /public/ 带有 Index.php(用户从这里开始) /libary/ 用于您的图书馆 使用这种结构,用户不能直接访问视图或模型。

【讨论】:

    猜你喜欢
    • 2015-03-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-11-09
    • 2020-08-22
    相关资源
    最近更新 更多