在codeigniter控制器中访问公共变量的值

时间:2011-06-16 12:30:56

标签: php codeigniter codeigniter-2

有谁知道如何访问已由另一个函数更新的公共控制器变量的值? 代码示例 控制器

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()时,我得到一个空数组..可能是什么问题? 任何帮助都会被贬低..

2 个答案:

答案 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”),那么将该代码放在构造函数中,每次从该控制器访问页面时都会调用它。

相关问题