如何在CodeIgniter 2.2中声明全局变量


How to declare global variable in CodeIgniter 2.2?

我在CodeIgniter中有一个这样的控制器

class C extends CI_controller {
    public function A()
    {
        var $data;
    }
    public function B(){
        //here i need to access the variable $data;
    }
}

如何在CodeIgniter中做到这一点?我需要一个疗程。在会话中给变量赋值真的是件好事吗?有没有更好的方式来声明全局变量?

我像这样使用,但不工作y

class C extends CI_controller {
        public $data;              
        public function A()
        {
            $this->data=1;
        }
        public function B(){
            //here $this->data showing null value y
        }
    }

全局变量只存在于请求的生存期内。因为对于一个请求,在控制器中只执行一个函数(或者你做错了!)全局变量将不起作用。

你必须把它放在会话或数据库

使用CI的会话帮助器:

class C extends CI_controller {
    public function A()
    {
        $this->load->library('session');
        $data = array('data'=>$data); //set it
        $this->session->set_userdata($data);
    }
    public function B(){
        $this->load->library('session');
        $this->session->userdata('data'); //access it
    }
}

你应该尝试在配置文件中设置一些变量,然后你只需将该文件包含在你的控制器构造函数中,你可以从任何视图中访问这些变量…http://codeigniter.com/user_guide/libraries/config.html

如果您有这种情况,则您拥有的第二块代码将不起作用:输入页面C/A,然后输入C/B。一旦页面完成,您将无法使用存储在全局变量中的值。

尝试使用会话或flashdata。Flashdata类似于会话,除了它在调用下一页后消失。

以下是会话和flashdata的CI页面供参考:http://codeigniter.com/user_guide/libraries/sessions.html