2014-09-05 251 views
0

獲取父類的PHP變量我已經在以下類別:從阿賈克斯

  • 抽象類utility,它包含了功能(例如數據庫連接)
  • get_conf,它返回的主要變量,我將幾乎無處不在(例如語言,登錄狀態)
  • get_data處理查詢到數據庫並返回結果。

這是我的索引文件:

$init = new get_conf(); 

$lang = $init->lang; 
$status = $init->status; 
(...) 

$config = new get_data($lang,$status); 

這是get_data類的構造。

class get_data extends utility { 

    public function __construct($lang = NULL,$status = NULL) { 
     $this->lang = $lang; 
     $this->status = $status; 
    } 

... 

一切工作正常,但我不知道如何在ajax調用期間最好處理。 實例,我需要的類,

$config = new get_data(); 

什麼是讓$lang$status的最佳方式後?此刻,我再次調用定義其值的函數 - get_language()check_login()

但還有更好的辦法嗎?我應該使用會話嗎?對我來說每次調用這些函數都不太合適,尤其是當我在同一頁面中有多個ajax調用時。

編輯:對不起,是我的錯,因爲我用錯誤的方式制定了這個問題。我會需要的是讓來自Ajax和確定的變量,但我需要在類

例如使用它們,在類get_data我有這樣的功能:

public function get_category($id_cat) { 
    $q = "SELECT category FROM p_category WHERE id = '".$id_cat."' AND code = ".$this->lang."; 
    return $this->exe_query($q); 
} 

因爲我從Ajax調用這個函數並不是,根據情況,$this->lang只有在我將它從Ajax請求中調出時才被定義。甚至使用靜態var也不適用於Ajax。

回答

0

試試:

class get_data extends utility { 
    static $lang = null; 
    static $status = null; 
    public function __construct($lang = NULL,$status = NULL) { 
     if($lang !== null){ 
      self::$lang = $lang; 
     } 
     if($status !== null){ 
      self::$status = $status; 
     } 
    } 
} 

$config = new get_data($lang,$status); 
echo get_data::$status; 
echo get_data::$lang; 
+0

謝謝我認爲它很棒!我剛剛得到注意:未定義的屬性:get_data :: $ lang在其他類中,我有$ this-> lang,$ this-> status,但我想我應該用self :: lang替換所有那些和self :: status,對吧? – supadema 2014-09-05 04:41:25

+0

是的。通過** self :: **所必需的靜態屬性 – 2014-09-05 04:45:28

1

寫下面的成員函數GET_DATA類中:

public function getCVar($var){ 
    $c = new get_data(); 
    eval('$tmp = $c->'.strtolower($var).';'); 
    return $tmp; 
    } 

然後你就可以得到變量值象下面這樣:

echo get_data::getCVar('lang'); echo get_data::getCVar('status');