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

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.05 10:36:01