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