Codeigniter如何设置全局变量 无需在每个控制器重复定义
CodeIgniter 全局变量跨控制器调用实现方案
以下是3种可直接落地的实现方式,优先推荐第一种:
方案1:自定义核心控制器(最适配需求)
这是CI框架官方推荐的全局逻辑复用方式,操作步骤如下:
- 进入
application/core目录,新建文件MY_Controller.php,写入如下代码:
<?php class MY_Controller extends CI_Controller { // 定义全局公共变量 public $template = '你的模板路径前缀/'; // 替换为实际需要的取值,例如'theme/default/' public function __construct() { parent::__construct(); // 可在此处添加其他全局初始化逻辑 } }
- 所有业务控制器将继承对象从
CI_Controller改为MY_Controller,即可直接调用全局变量,修改后的控制器示例:
控制器1代码:
class Auth extends MY_Controller{ public function index (){ $this->load->view($this->template.'Auth'); } }
控制器2代码:
class Loader extends MY_Controller{ public function index (){ $this->load->view($this->template.'Auth'); } }
该方案优势:后续新增其他全局变量/全局逻辑只需要在MY_Controller中添加即可,还支持按业务模块拆分不同的基础控制器,灵活性最高。
方案2:自定义配置文件
如果不想修改控制器的继承关系,可以用配置项实现:
- 进入
application/config目录,新建文件custom_config.php,写入如下代码:
<?php $config['template'] = '你的模板路径前缀/';
- 打开
application/config/autoload.php,找到$autoload['config']配置项,将自定义配置加入自动加载:
$autoload['config'] = array('custom_config');
- 任意控制器中直接调用配置项即可:
$this->load->view($this->config->item('template').'Auth');
方案3:定义全局常量
如果$template的取值固定不会动态修改,可以直接用框架常量配置:
- 打开
application/config/constants.php,末尾添加常量定义:
define('TEMPLATE_PREFIX', '你的模板路径前缀/');
- 任意位置直接调用常量即可:
$this->load->view(TEMPLATE_PREFIX.'Auth');
内容的提问来源于stack exchange,提问作者Abdullah Aytekin
相关产品推荐
相关产品推荐

