2011-08-31 91 views
1

我有這樣的笨控制器如何在CodeIgniter 2.2中聲明全局變量?

class C extends CI_controller { 

    public function A() 
    { 
     var $data; 
    } 

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

    } 
} 

如何做到這一點的笨?我可以使用會話。在會話中分配該變量真的是一件好事嗎?有沒有更好的方法來聲明全局變量?

我像這樣使用,但不工作Ÿ

class C extends CI_controller { 

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

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

     } 
    } 

回答

3

全局變量只有在請求的生命存在。由於一個請求只有一個函數在控制器中執行(或者你以錯誤的方式執行),全局變量將不起作用。

您必須將其放入會話或數據庫中。

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

如果您有這種情況,您擁有的第二個代碼塊將無法工作:輸入C/A頁面,然後輸入C/B。一旦頁面完成,您將無法使用您存儲在全局變量中的值。

嘗試使用會話或flashdata。 Flashdata與會話類似,除了在下一次頁面調用後消失。

以下是會議和閃光數據的CI頁面供參考:http://codeigniter.com/user_guide/libraries/sessions.html