首先,对于此帖子可能造成的任何不便我们深表道歉,因为这是我第一次在这里发布问题,我需要更多时间来适应。
问题1:我想创建两个像这样的“主控制器”用于FrontEnd和BackEnd:
- MY_Controller扩展了CI_Controller
- FrontEnd扩展了MY_Controller,所有前端控制器都将扩展FrontEnd。
- BackEnd扩展了MY_Controller,所有后端控制器都将扩展BackEnd。
使用HMVC (MX),最好的方法是什么?
感谢 @ Wesley Murch 提出的将3个类 MY_Controller、Frontend 和 Backend 放入 MY_Controller.php 的思路,但我认为将每个类放在一个 PHP 文件中更好(更清晰)。或者我错了吗?我考虑创建这样的结构:
- ./core/MY_Controller.php (扩展MX_Controller)
- ./libraries/Backend.php (扩展MY_Controller)
- ./libraries/Frontend.php (扩展MY_Controller)
- 在autoload.php中自动加载 Backend 和 Frontend
- 所有前端控制器都将扩展Frontend(例如:
class Blog extends Frontend
) - 所有后端控制器都将扩展Backend(例如:
class Admin extends Backend
)
这样做是否能够在backend/frontend控制器中不多加一行代码的情况下正常工作,无需include_once或require_once:./libraries/Backend.php或./libraries/Backend.php?
问题2:如何使用HMVC实现多个主题?例如,在MVC中,我们可以有以下两个结构的主题:
- ./application/views/theme1/view_files.php
- ./application/views/theme2/view_files.php
但是在HMVC中,视图文件夹位于单独的文件夹内,如果我想要实现多个主题,通常我必须这样做:
- ./application/modules/module1/views/theme1/view_files.php
- ./application/modules/module1/views/theme2/view_files.php
- ./application/modules/module2/views/theme1/view_files.php
- ./application/modules/module2/views/theme2/view_files.php
这不是我想要的,因为我想把一个主题的所有视图文件放到一个文件夹中,如果以后我想创建一个新的主题,我只需要复制一个主题文件夹。但我想知道如何在不破坏HMVC模型的情况下做到这一点(因为据我所知,在HMVC模型中,模型、视图和控制器必须在一个模块文件夹中 - 至少在CI中是这样)。这就是我卡住的冲突。
class Blog extends Frontend
。 - Michael Bui