直接修改 app/Config/Autoload.php 配置 PSR-4 命名空间映射(如 $psr4['App\Libraries\'] = APPPATH . 'Libraries/')、$helpers 数组(如 ['url', 'my_custom'])和 $services(仅内置服务),并清除缓存、重启服务。
直接改,别碰下的任何文件,否则升级必炸。
autoload.php 里怎么加自定义类路径
CodeIgniter 4 的自动加载靠的是 PSR-4 规范映射,不是传统 include。你得往
数组里塞命名空间和物理路径的对应关系。
比如你想自动加载
,对应文件在
,那就加一行:
注意结尾斜杠和双反斜杠:路径末尾必须有
,命名空间末尾必须是
(Windows 下尤其容易漏转义)
别写成
—— 少了斜杠会导致类文件路径拼错,报
helper 和 service 怎么自动载入不报错
helper 文件不能用 PSR-4 加载,得走
数组;service 同理要进
。这两类填错位置就完全不会生效,且无提示。
加 helper:把
、
这种字符串直接塞进
数组,例如
(对应
)
加 service:只支持框架内置 service 名(如
、
),自定义 service 必须手动注册到
,
里填了也没用
常见错误:
—— 文件名必须是小写 +
,类名或变量名大小写不敏感,但文件名必须全小写,否则 Linux 环境下直接 404
修改后为什么没生效?缓存和环境的影响
CI4 默认启用配置缓存,改完
不清缓存,等于白改。
开发环境执行:
或删掉
下所有文件
如果用了
,改完记得重启服务 —— 它不会热重载配置文件
生产环境切记不要开
后还手动改 autoload,应先生成缓存再部署:
检查是否误启用了
:CI4 不依赖 Composer 自动加载逻辑,混用会导致命名空间冲突或重复加载
最常被跳过的其实是命名空间声明和文件物理路径的一致性——写对了 autoload 配置,但类文件顶部没写
,或者路径里多了一层目录,问题就出在这儿,而不是配置本身。
app/Config/Autoload.phpsystem/$psr4AppLibrariesPaymentGatewayapp/Libraries/PaymentGateway.php$psr4['AppLibraries\'] = APPPATH . 'Libraries/';/\APPPATH.'Libraries'Class not found$helpers$services'url''text'$helpers$helpers = ['url', 'text', 'my_custom'];app/Helpers/my_custom_helper.php'cache''log'app/Config/Services.phpAutoload.php$helpers = ['My_helper']_helper.phpAutoload.phpphp spark cache:clearwritable/cache/spark serveCI_ENVIRONMENT = productionphp spark optimizecomposer dump-autoloadnamespace AppLibraries;