Php Codeigniter构造函数-加载数据库+;设置变量

Php Codeigniter构造函数-加载数据库+;设置变量,php,model-view-controller,codeigniter,constructor,controller,Php,Model View Controller,Codeigniter,Constructor,Controller,我想知道如何将以下代码添加到我的codeigniter构造函数中: $this->load->model('members_model'); $member = $this->session->userdata('email_address'); $viewdata['pagecontent'] = $this->members_model->get_profile($member); 代码在我的控制器中被使用

我想知道如何将以下代码添加到我的codeigniter构造函数中:

$this->load->model('members_model');
            $member = $this->session->userdata('email_address');
            $viewdata['pagecontent'] = $this->members_model->get_profile($member);
代码在我的控制器中被使用,每次重复它似乎都很愚蠢。当我尝试将其添加到构造函数时,我无法引用设置的变量

这是迄今为止的构造函数:

public function __construct(){
        parent::__construct();  
        Accesscontrol_helper::is_logged_in_super_user();    

        $this->load->model('members_model');
        $member = $this->session->userdata('email_address');
        $viewdata['pagecontent'] = $this->members_model->get_profile($member);
    }

为什么上面的代码不起作用?构造函数需要不同的代码吗?

从这个意义上讲,构造函数与所有其他方法(和函数)一样工作,因此您的变量受变量范围的约束

做:

然后,在其他控制器的方法中,只需调用类属性$this->viewdata,例如

function index()
{
  $this->load->view('myview',$this->viewdata);
}
并在myview.php中访问它:

echo $pagecontent;

看起来您遇到了一些范围问题。由于变量是在
\uu construct()
方法中声明的,因此这是唯一能够引用它们的方法。您需要使它们成为类变量,以便在所有方法中访问它们

试着这样做:

class Your_class extends CI_Controller {

    protected $member;
    protected $viewdata;

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

        Accesscontrol_helper::is_logged_in_super_user();    

        $this->load->model('members_model');

        $this->member = $this->session->userdata('email_address');
        $this->viewdata['pagecontent'] = $this->members_model->get_profile($member);
    }
}
然后,您可以在以下类似的其他方法中引用
$member
$viewdata
$this->member

您可能希望以不同的方式进行设置,但希望您了解变量和范围

class Your_class extends CI_Controller {

    protected $member;
    protected $viewdata;

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

        Accesscontrol_helper::is_logged_in_super_user();    

        $this->load->model('members_model');

        $this->member = $this->session->userdata('email_address');
        $this->viewdata['pagecontent'] = $this->members_model->get_profile($member);
    }
}