在Codeigniter中定义全局(动态)变量

时间:2011-11-20 22:05:03

标签: php codeigniter global-variables

有没有办法在Codeigniter中定义动态全局变量?我需要经常使用:

$this->session->userdata('user_id')

在我的代码中,我真的不想一直输出这个。我在另一个项目中所做的是使用类似的东西:

$this->mid = $this->session->userdata('user_id')

在控制器的构造函数中,使其可以访问该控制器中的每个方法,但我必须在每个其他控制器构造函数中重新定义它。我知道我听起来很懒,但我只想制作最好的DRY代码。我知道你可以在config / config.php文件中指定静态变量,但这些变量是动态的 - 所以我认为你不能访问该文件中的$ this对象(或其他东西)。

是否有将这样的会话变量设为全局?

1 个答案:

答案 0 :(得分:2)

创建自定义控制器MY_Controller.php:

<?php
    class MY_Controller extends Controller {

        var user_id = '';

        function __construct() {
            parent::__construct();

            $this->user_id = $this->session->userdata('user_id');
        }
    }
?>

并通过控制器扩展该控制器,例如控制器Welcome.php:

<?php
    class Welcome extends MY_Controller {

        function __construct() {
            parent::__construct();
        }

        function index() {
            var_dump( $this->user_id );
        }
    }
?>

您可以在MY_Controller中设置全局变量,并在扩展自定义变量的每个控制器上使用它。