2012-05-14 108 views
0

我試圖訪問PHP中的父類的內容,但由於某種原因,它似乎並不想通過。我對OOP很陌生,所以如果有任何建議,請告訴我。下面是我的代碼:訪問PHP中的父變量內容

class baseQuery { 
    public static $numbers = "(1, 2, 3, 4, 5, 6, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 32, 39, 50, 52, 72, 109, 110, 850, 1839, 1968, 1969, 1970, 1972, 1973, 2364, 2365, 3009)"; 
} 

class specificQuery extends baseQuery { 
    public function __construct() { 
     $numbers = $this->numbers; 
    } 
    public function test() { 
     echo $numbers; //fails 
    } 
} 

回答

2

如果您要訪問的靜態成員,您需要使用以下語法:

self::$varname 

你可以通過實際的類名稱,而不是self這樣做。就php而言,您的test()方法試圖訪問您尚未聲明的名爲$numbers的變量。如果您不使用$this->self::語法,則PHP會將其假定爲本地變量(或者,如果您確實非常危險,則爲全局變量)。

0

在擴展原來的第二個類,你正在設置一個常規變量,你需要將它存儲在某個地方。

嘗試在第二個類中分配一個新的公共變量,將數字存儲到他,然後將其顯示在函數中。

0
class baseQuery { 
    public static $numbers = "(1, 2, 3, 4, 5, 6, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 32, 39, 50, 52, 72, 109, 110, 850, 1839, 1968, 1969, 1970, 1972, 1973, 2364, 2365, 3009)"; 
} 
class specificQuery extends baseQuery { 
    public function __construct() {} 

    public function test() { 
     echo self::$numbers; // works :) 
    } 
} 
1

您應該讀取"Late Static Bindings"。基本上你會使用static關鍵字訪問數字屬性。

class specificQuery extends baseQuery { 
    public function test() { 
     echo static::$numbers; 
    } 
} 

我喜歡,因爲那時如果你設置$在擴展原有的一類號碼使用靜態戰勝自我,就可以訪問,而不是基類。