Php Codeigniter构造函数-加载数据库+;设置变量
我想知道如何将以下代码添加到我的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); 代码在我的控制器中被使用
$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);
}
}