2011-04-03 98 views
0

我有一個類PHP類擴展和家長的construnctor

 
class parent { 
function __construct(){ 
global $var; 
} 
} 

和其他類

 
class child extends parent { 
function construct(){ 
parent :: __construct; 
} 
function print(){ 
echo $var; 
} 
} 
 
$a = new child; 
$a->print(); 

有沒有什麼辦法讓$ VAR提供給print()方法,而不調用global $var;裏面print()

謝謝!

回答

0

不,這是不可能的,因爲它只是一個全局變量,因此在父代或繼承類中沒有任何特殊的狀態。

但是,你可以:

  1. 設置實例父類中(即:一流水平)變量的值相同的全局變量。然後,您可以在子類的print方法中使用繼承的變量。

  2. 將全局變量作爲參數傳遞給構造函數。然而,你會需要修改這個孩子(這會將變量傳遞給父類)和父類構造函數。

+0

感謝您的幫助! – 2011-04-03 16:05:30

+0

@Sorin沒問題。 :-) – 2011-04-03 16:05:59

0

如果您將$ var定義爲成員變量,這是可行的。

class parent { 
    public $var; 
    function __construct(){ 
    global $var; 
    $this->var = $var; 
    } 
} 

class child extends parent { 
    function construct(){ 
    parent :: __construct; 
    } 
    function print(){ 
    echo $this->var; 
    } 
} 

$a = new child; 
$a->print(); 
+0

你的代碼是錯誤的。 (您需要在打印方法中使用'echo $ this-> var;'):-) – 2011-04-03 21:48:16

+0

已修復。謝謝 :) – jmathai 2011-04-04 19:58:07