Codeigniter中的函数__construct()内部的变量

时间:2012-05-20 09:54:49

标签: codeigniter codeigniter-2

我在codeigniter中使用Tank_auth进行用户身份验证。要检查是否有用户登录,如果他要获取用户名和ID,我需要在我的控制器的每个功能中使用以下代码,这非常令人恼火。

 // If any user is logged in get his/her userid or name
    if ($this->tank_auth->is_logged_in()) {

        $data['user_id']    = $this->tank_auth->get_user_id();
        $data['username']   = $this->tank_auth->get_username();
    }

所以,我想知道我是否可以通过将以下代码放在function __construct()中来改善生活,如下所示: 但它不起作用。

你能告诉我如何让它发挥作用吗?

提前致谢:)

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

      $this->load->helper('url');
      $this->load->library('tank_auth');


          if ($this->tank_auth->is_logged_in()) {

        $data['user_id']    = $this->tank_auth->get_user_id();
        $data['username']   = $this->tank_auth->get_username();
    }
  }

1 个答案:

答案 0 :(得分:4)

如果您打算仅在此控制器内使用此数组,则可以像这样使用它:

//outside the functions define the $data as controller class property:

private $data = array();

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

    $this->load->helper('url');
    $this->load->library('tank_auth');


    if ($this->tank_auth->is_logged_in()) {
        $this->data['user_id']    = $this->tank_auth->get_user_id();
        $this->data['username']   = $this->tank_auth->get_username();
    }
}

//and then use it like 

function index(){
    $this->load->view("something.php",$this->data);
}