Php 从控制器函数设置全局变量
我正在从事CI项目,我被困在某个地方。我尝试从函数中设置一个全局变量值,并从其他函数中访问该值。这是我的密码Php 从控制器函数设置全局变量,php,codeigniter,Php,Codeigniter,我正在从事CI项目,我被困在某个地方。我尝试从函数中设置一个全局变量值,并从其他函数中访问该值。这是我的密码 class Example extends CI_Controller { public $gData = ""; public function userinfo() { //Here i fetch user infomration from database table $userName = "userName";
class Example extends CI_Controller {
public $gData = "";
public function userinfo() {
//Here i fetch user infomration from database table
$userName = "userName";
$this->gData = $userName;
}
public function getuserinfo() {
echo $this->gData;
}
}
userinfo是我在浏览器中打开的实际页面,它从用户表中获取用户的数据。在我看来,我有一个点击按钮,我正在调用ajax,它调用控制器的getuserinfo方法,它假设返回我在userinfo方法中设置的用户名,但不幸的是它不起作用。任何人都会指引我犯错的地方。不允许我使用会话请尝试以下操作:必须先在全局变量中设置用户名:
class Example extends CI_Controller {
public $gData = "";
public function userinfo() {
//Here i fetch user infomration from database table
$userName = "userName";
$this->gData = $userName;
}
public function getuserinfo() {
$this->userinfo();
echo $this->gData;
}
}
或者你可以使用构造函数:我不熟悉CI
class Example extends CI_Controller {
public $gData = "";
Public function __construct() {
parent::__construct();
$this->userinfo();
}
public function userinfo() {
//Here i fetch user infomration from database table
$userName = "userName";
$this->gData = $userName;
}
public function getuserinfo() {
echo $this->gData;
}
}
编辑答案:
根据注释,如果您不想使用会话,解决方案可以如下所示:
一,。使用userinfo查询创建视图
二,。使用该视图创建模型并编写逻辑。
我想这可能对你有帮助。它不会减慢您的结果。您可以按照Amitesh所述在构造函数中定义变量,或者您可以更改userinfo方法以仅返回数据,以便getuserinfo方法可以使用它。例如:
class Example extends CI_Controller {
public function userinfo() {
//Here i fetch user infomration from database table
$userName = "userName";
return $userName;
}
public function getuserinfo() {
// get the data
$username = $this->userinfo();
echo $username;
}
}
通过调用$this->userinfo,您将运行该方法,并且返回值将可用于同一控制器中进行调用的任何函数实际上userinfo包含获取代码。如果我从getuserinfo调用userinfo方法,提取代码将再次执行,这是我不想做的,因为用户表包含大量数据,执行这些数据需要时间。提取代码有用户表和大量左连接。每个表都包含大量的数据。因此,我不想多次调用fetch执行。我只提取一次数据,从结果中提取一些数据,并希望在getuserinfo方法中使用它。我会尝试同样的方法。这两个控制器方法服务于不同的请求。整个控制器将被销毁并在其间重新创建,它将不会保留您在其上设置的任何内容。也不应该,因为如果你同时有两个访客会发生什么?!您需要通过URL传递该值。