有没有办法在Codeigniter中定义动态全局变量?我需要经常使用:
$this->session->userdata('user_id')
在我的代码中,我真的不想一直输出这个。我在另一个项目中所做的是使用类似的东西:
$this->mid = $this->session->userdata('user_id')
在控制器的构造函数中,使其可以访问该控制器中的每个方法,但我必须在每个其他控制器构造函数中重新定义它。我知道我听起来很懒,但我只想制作最好的DRY代码。我知道你可以在config / config.php文件中指定静态变量,但这些变量是动态的 - 所以我认为你不能访问该文件中的$ this对象(或其他东西)。
是否有将这样的会话变量设为全局?
答案 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中设置全局变量,并在扩展自定义变量的每个控制器上使用它。