codeigniter自动加载helper需配置autoload.php(ci3)或autoload.php(ci4),将helper名(不含后缀)填入$autoload['helper']数组或$helpers属性,文件须置于标准路径并符合xxx_helper.php命名规范。

CodeIgniter 配置自动加载 helper 很简单,核心就是改一个配置文件,让框架在启动时就帮你把需要的辅助函数载入内存,之后 anywhere 都能直接调用。
修改 autoload.php 配置文件
打开 application/config/autoload.php(CI3)或 app/Config/Autoload.php(CI4),找到名为 $autoload['helper'] 的数组(CI3)或 public $helpers = []; 属性(CI4)。
- CI3 示例:
$autoload['helper'] = array('url', 'file', 'myfunc'); - CI4 示例:
public $helpers = ['url', 'file', 'myfunc'];
填入的字符串是 helper 文件名(不含 _helper.php 后缀)。比如你写了 application/helpers/myfunc_helper.php,就填 'myfunc'。
确保 helper 文件位置和命名正确
自动加载只认标准路径和规范命名:
- CI3:放在
application/helpers/下,文件名必须为xxx_helper.php - CI4:优先从
app/Helpers/加载(注意是复数、首字母大写),文件名也必须是xxx_helper.php - 自定义前缀扩展(如重写原生 helper):CI3 用
MY_xxx_helper.php,CI4 则需配合命名空间或按文档约定放在对应模块 Helpers 目录下
避免常见加载冲突
自动加载不是万能的,要注意几个关键点:
- 不要在
$autoload['helper']中重复加载同一个 helper 多次,无效且可能掩盖问题 - 若同时自动加载了原生 helper(如
'array')和你写的MY_array_helper.php,CI3 会先加载 MY 版本再跳过原生版;但 CI4 更依赖命名空间和搜索顺序,建议统一用app/Helpers/管理自定义函数 - 如果 helper 内部要用到 CodeIgniter 的核心类(如
$this->db),不能直接用$this—— 需通过$CI =& get_instance();获取实例再调用
调试是否加载成功
最直接的办法是在控制器里临时加一行:
var_dump(function_exists('site_url')); // 应该返回 true
或者调用你自定义 helper 里的某个函数,看是否报 Call to undefined function。如果报错,重点检查:
– 文件路径对不对
– 文件名有没有漏 _helper.php
– autoload 数组里拼写是否一致(大小写敏感)
– CI4 是否已将 app/Helpers/ 加入 PSR-4 自动加载范围(默认已配好)











