2013-10-11 39 views
-1

我編寫了新的項目。我創建了一個新系統,因爲它如此混雜。首先,我有主類,它有3個變量;php父類編輯變量

  • 數據庫變量:它有ezSQL類和名稱爲$ DB
  • 存儲類:我有輔助類和存儲這個變量的命名爲$店
  • 存儲的數據:我已經把現場的選擇和其他MySQL數據單項的名字$ stored_data

及其代碼:

class main { 
    var $db; 
    var $store; 
    var $stored_data; 

    public function main(){ 
    global $db; // ezsql class 
    $this->db=$db; 
    } 

    public function get_helper_class($classname){ 
    if(isset($this->store[$classname])) 
     return $this->store[$classname]; 
    include_once "helperclass/".$classname.".php"; 
    $this->store[$classname]=new $classname; 
    return $this->store[$classname]; 
    } 
} 

和爲例Ë輔助類的名稱選項

class option extends main { 
    public function get_option($optname){ 
    if($this->stored_data['option'][$optname]) 
     return $this->stored_data['option'][$optname]; 
    // else get result and put stored_data 
    } 
} 

,如果我使用,第二個輔助

class example extends main{ 
    public function get_data($dataname){ 
    return $this->get_helper_class('option')->get_option('optionname'); 
    } 
} 

但是當我叫助手類幫助我無法看到$店[「選項」]數據及其創建新的選項類。 問題:

幫助程序類不能從主類獲取$ store,$ db,$ stored_data變量。

我想要編輯的數據和變量,但它的總是創建新的數據。 我能做什麼?

+1

請顯示一個測試案例,顯示問題。 – Oswald

+0

您的主類*中沒有'$ store','$ db','$ stored_data'變量。這些變量屬於*對象*(即類的*實例*)。每個對象都有自己的一組這些變量的值。 – Oswald

+0

你的課程取決於全局狀態,包含外部腳本並且正在泄漏封裝。你期望什麼?添加'eval'或'goto',你將成爲「最差代碼」獎的主要候選人。 –

回答

0

也許得到正確的選擇?這也取決於你如何設置選項:

return $this->get_helper_class('option')->get_option($dataname);