You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

CodeIgniter 4 HMVC开发求助:找不到适配插件,需模块式开发

在CodeIgniter 4中实现HMVC风格的模块化开发

CodeIgniter 4没有官方的HMVC插件,但完全可以通过原生的命名空间和目录结构手动实现按类划分模块,让每个模块独立拥有控制器、视图甚至配置文件,具体步骤如下:

1. 搭建模块目录结构

在app目录下新建Modules文件夹,每个业务模块单独建子目录,比如用户模块的结构示例:

app/
└── Modules/
    └── User/
        ├── Controllers/
        │   └── User.php
        ├── Views/
        │   └── profile.php
        └── Config/
            └── Routes.php

2. 配置命名空间自动加载

打开app/Config/Autoload.php,找到$psr4数组,添加模块的命名空间映射:

public $psr4 = [
    APP_NAMESPACE => APPPATH,
    'Config'      => APPPATH . 'Config',
    'Modules\\'   => APPPATH . 'Modules', // 一次性映射所有模块,无需逐个添加
];

3. 编写模块控制器

以用户模块的控制器为例,Modules/User/Controllers/User.php代码示例:

namespace Modules\User\Controllers;

use CodeIgniter\Controller;

class User extends Controller
{
    public function profile()
    {
        // 直接调用模块内的视图文件
        return view('Modules\User\Views\profile');
    }
}

4. 配置模块专属路由

每个模块可以单独维护路由文件,在Modules/User/Config/Routes.php中编写模块专属路由:

$routes->get('user/profile', 'Modules\User\Controllers\User::profile');

然后在主路由文件app/Config/Routes.php末尾引入模块路由:

require_once APPPATH . 'Modules/User/Config/Routes.php';

如果有多个模块,依次引入对应模块的路由文件即可。

5. 简化视图调用(可选)

默认调用视图需要写完整命名空间路径,想简化的话,打开app/Config/View.php,在$paths数组里添加模块根目录:

public $paths = [
    APPPATH . 'Views/',
    APPPATH . 'Modules/',
];

之后控制器里就能用更短的路径调用视图:

return view('User\Views\profile');

额外说明

  • 模块内的模型、库、语言文件等都可以按同样逻辑组织,比如Modules/User/Models/UserModel.php,命名空间设为Modules\User\Models,在控制器里直接use即可调用。
  • 每个模块可以独立配置过滤器、验证规则等,只要遵循命名空间规范,CI4就能自动加载。

内容的提问来源于stack exchange,提问作者Cristian De Jesus Torres Diaz

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.27 14:18:29