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

时间:2011-08-31 11:41:53

标签: php codeigniter

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

class C extends CI_controller {

    public function A()
    {
        var $data;
    }

    public function B(){
        //here i need to access the variable $data;

    }
}

如何在CodeIgniter中执行此操作?我可以使用一个会话。在会话中分配该变量真的是一件好事吗?有没有更好的方式来宣布全球变量?

我这样使用但不能正常工作

class C extends CI_controller {

        public $data;              
        public function A()
        {
            $this->data=1;
        }

        public function B(){
            //here $this->data showing null value y

        }
    }

4 个答案:

答案 0 :(得分:3)

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

您必须将其放入会话或数据库中。

答案 1 :(得分:2)

使用CI's session helper

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
    }
}

答案 2 :(得分:1)

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

答案 3 :(得分:0)

如果您有这种情况,您拥有的第二段代码将无效:输入页面C / ​​A然后输入C / B.页面完成后,您将无法使用存储在全局变量中的值。

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

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