有谁知道如何访问已由另一个函数更新的公共控制器变量的值? 代码示例 控制器
class MyController extends CI_Controller {
public $variable = array();
function __construct() {
parent::__construct();
}
function index(){
$this->variable['name'] = "Sam";
$this->variable['age'] = 19;
}
function another_function(){
print_r($this->variable);
}
}
当我调用another_function()时,我得到一个空数组..可能是什么问题? 任何帮助都会被贬低..
答案 0 :(得分:10)
你必须使用构造函数,而不是index()。
class MyController extends CI_Controller {
public $variable = array();
function __construct() {
parent::__construct();
$this->variable['name'] = "Sam";
$this->variable['age'] = 19;
}
function index(){
}
function another_function(){
print_r($this->variable);
}
}
如果您想致电index()
,请致电another_function()
,尝试使用CI session课程。
class MyController extends CI_Controller {
public $variable = array();
function __construct() {
parent::__construct();
$this->load->library('session');
if ($this->session->userdata('variable')) {
$this->variable = $this->session->userdata('variable');
}
}
function index(){
$this->variable['name'] = "Sam";
$this->variable['age'] = 19;
$this->session->set_userdata('variable', $this->variable);
}
function another_function(){
print_r($this->variable);
}
}
答案 1 :(得分:2)
index()
功能仅在您转到该特定网页时调用,即index.php/mycontroller/index
因此转到index.php/mycontroller/another_function
将不会调用index()
功能。如果您需要用户首先转到索引页面(以获取其详细信息),请先将它们引导到那里并将详细信息保存到数据库或会话变量中。如果您事先知道这些值(即它总是“Sam”和“19”),那么将该代码放在构造函数中,每次从该控制器访问页面时都会调用它。