Php 带代码点火器的帮助(构造)

Php 带代码点火器的帮助(构造),php,codeigniter,constructor,Php,Codeigniter,Constructor,我正在检查用户是否已登录。如果是,我想设置一些变量,这些变量将可用于该类中的所有函数,这里是迄今为止的代码。从我的视图中调用$logged_in或$user_name会导致未定义的变量吗?请帮忙:) 这是因为您在视图中传递了$data,并且$data不包含$user\u name 在加载视图之前,您应该执行如下操作,以便这些变量在视图中可用 $data['user_name'] = $this->user_name; $data['logged_in'] = $this->logg

我正在检查用户是否已登录。如果是,我想设置一些变量,这些变量将可用于该类中的所有函数,这里是迄今为止的代码。从我的视图中调用$logged_in或$user_name会导致未定义的变量吗?请帮忙:)



这是因为您在视图中传递了
$data
,并且
$data
不包含
$user\u name

在加载视图之前,您应该执行如下操作,以便这些变量在视图中可用

$data['user_name'] = $this->user_name;
$data['logged_in'] = $this->logged_in.
$this->load->view('template', $data);
编辑:

在初始化构造函数之前,将
$data
声明为全局变量,如下所示-

受保护的$data


然后将
$data
用作
$this->data
,这样,如果在一个函数中使用用户名初始化,那么它也将在所有函数中可用。

在您的视图中,这是一种更简单的方法,而不是使用:

echo$user_name;//导致未定义的变量

使用:

$this->session->userdata('user_name')$此->会话->用户数据('user_name'):''


简单来说,上面的语句检查会话中是否设置了用户名,如果设置了,则直接从会话中显示用户名,否则显示为空。有了这个功能,您需要确保用户注销后会话var user_name会被销毁。

好吧,我明白了,但在我的每个函数中,我必须执行$data['user_name']=$this->user_name有什么方法可以保持干燥吗?@mdgrech:是的,必须这样做。或者,您可以将数据声明为全局变量,这样,上述操作只需执行一次,并且在每个函数的数据中都可用。:)@mdgrech:编辑了上面的代码,以包含为使其更干净而应进行的更改。您可能希望将“全局变量”更改为“成员变量”,因为它是对象的属性,而不是全局命名空间的一部分。我同意这种方法,但提出一个全局变量让我畏缩(即使它不是)。
$data['user_name'] = $this->user_name;
$data['logged_in'] = $this->logged_in.
$this->load->view('template', $data);