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

CodeIgniter 4报错:未找到Company\PostTranslator\Models\TranslateCategoryModel类

CodeIgniter 4 类找不到问题排查

问题描述

使用CodeIgniter 4开发项目时,突然出现报错:

CRITICAL Class "Company\PostTranslator\Models\TranslateCategoryModel" not found

IDE可正常跳转至该类文件,但框架无法识别。模块内的Events.php能正常触发日志(日志记录:ERROR - 2023-02-13 10:48:16 --> FIRING EVENT pre_system),说明模块加载无问题。

项目结构

  • app
  • assets
  • modules
    • Company
      • PostTranslator
        • Models
          • TranslateCategoryModel.php
  • writable
  • ...

相关配置与代码

app/Config/Autoload.php(PSR4配置)

public $psr4 = [
    APP_NAMESPACE => APPPATH, // For custom app namespace
    'Config'      => APPPATH . 'Config',
    'Company\PostTranslator' => ROOTPATH . 'modules/Company/PostTranslator',
];

modules/Company/PostTranslator/Models/TranslateModel.php

<?php

namespace Company\PostTranslator\Models;

use Company\PostTranslator\Models\TranslateCategoryModel;
use App\Models\PostAdminModel;

class TranslateModel extends PostAdminModel
{
    public $translateCategoryModel;

    public function __construct()
    {
        $this->translateCategoryModel = new TranslateCategoryModel();
    }

    public function addTranslatedPost($postData, $translatedContent)
    {
        ...
    }
}

modules/Company/PostTranslator/Models/TranslateCategoryModel.php

<?php

namespace Company\PostTranslator\Models;

use App\Models\CategoryModel;

class TranslateCategoryModel extends CategoryModel
{   
    ...
}

排查建议

  1. 检查大小写一致性

    • 确认服务器系统(如Linux)是大小写敏感的,文件名TranslateCategoryModel.php的大小写必须和类名TranslateCategoryModel完全一致,包括命名空间中的目录名(Company、PostTranslator、Models)。
  2. 清除框架缓存

    • 删除writable/cache/目录下的所有文件,CodeIgniter 4会缓存类映射,旧缓存可能导致类无法被识别。
  3. 验证命名空间与路径映射

    • 确认Autoload.php中的PSR4映射路径ROOTPATH . 'modules/Company/PostTranslator'是否正确,可通过var_dump(ROOTPATH)输出实际路径,检查是否和模块所在路径匹配。
  4. 检查文件权限

    • 确保TranslateCategoryModel.php文件对服务器进程有可读权限,避免因权限问题导致框架无法读取文件内容。
  5. 使用框架的类加载器调试

    • 在调用new TranslateCategoryModel()之前,添加var_dump(class_exists('Company\PostTranslator\Models\TranslateCategoryModel')),查看返回值。如果返回false,尝试手动使用require_once加载文件,确认是否能正常加载。
  6. 检查类定义完整性

    • 确认TranslateCategoryModel.php文件中没有语法错误,类定义完整且没有遗漏闭合标签(虽然PHP允许省略,但有时会导致加载问题)。

内容的提问来源于stack exchange,提问作者AKKAweb

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.31 15:31:58