2013-05-19 60 views
0

我正在開發一個使用CodeIgniter的網站。在控制器中使用私有變量

我已經聲明瞭一個控制器,在這個控制器類中,我添加了一個私有變量作爲數組,並且使用來自會話類的信息填充了該數組。

<?php if (! defined('BASEPATH')) exit('No direct script access allowed'); 

class Admin extends CI_Controller{ 

    public function __construct() 
    { 
     private $data = Array(''); 

     parent::__construct(); 
     $this->data = Array(
      'nom' => $this->session->userdata('admin_fullname') 
     ); 
    } 

在一些方法我得把這個變量:

public function dashboard(){ 
    $this->load->view('admin/header', $data); 
    $this->load->view('admin/left_navigation'); 
    $this->load->view('admin/dashboard'); 
    $this->load->view('admin/footer'); 
} 

但它給我這個錯誤:遇到

#A PHP錯誤嚴重性:通知消息:未定義 變量:數據文件名:控制器/ admin.php的行號:73

行號73:$this->load->view('admin/header', $data);

+0

'$ data' - >'$ this-> data' – Dave

回答

2

你正在聲明一個函數內的私有變量;你必須將其移出。

所以這個:

class Admin extends CI_Controller{ 

    public function __construct() 
    { 
    private $data = Array(''); 

    parent::__construct(); 
    $this->data = Array(
     'nom' => $this->session->userdata('admin_fullname') 
    ); 
    } 

會變成這樣:

class Admin extends CI_Controller{ 

    private $data; 
    public function __construct() 
    { 
    $this->$data = Array(''); 

    parent::__construct(); 
    $this->data = Array(
     'nom' => $this->session->userdata('admin_fullname') 
    ); 
    } 

另外,不要忘記用$this->前綴它來訪問您的數據陣列。

+0

語法錯誤。 '$ this - > $ data = Array('');'應該是:'$ this-> data = Array('');'(或者最好'$ this-> data = array();') 。 – TARKUS

1

由於您使用的一個對象的屬性,你需要$this前綴是:

$this->load->view('admin/header', $this->data); 

此外,你應該在類範圍內聲明它,而不是在構造函數的。