2011-03-21 97 views
0
class a 
{ 
    public function __construct() 
    { 
     $this->id = 123; 
    } 
} 

class b extends a 
{ 
    public function __construct() 
    { 
     echo parent::id; 
    } 
} 

如何將第一類$ this中設置的變量傳遞給第二類?PHP基本OOP問題

+0

在這種情況下,您可能無法使用'parent :: id;',因爲它不是父類中的靜態屬性。 – Shameer 2011-03-21 04:32:19

回答

5

正確的方法是簡單地在您的子類中使用$this->id。所有公共/保護變量都可以通過這種方式用於子類。通過分配$this->id而不聲明它,你已經隱含地公開它。一般來說,你應該明確地聲明變量在基類來記錄你的意圖把它公開:

class a 
{ 
    public $id; 

    public function __construct() 
    { 
     $this->id = 123; 
    } 
} 

只記得打電話給parent::__construct()您嘗試訪問成員由父類中設置之前。與某些語言(C++)不同,父類的構造函數不會自動爲您調用。

class b extends a 
{ 
    public function __construct() 
    { 
     parent::__construct(); 
     echo $this->id; 
    } 
} 
+0

+1很高興有像更有經驗的人一樣的想法,並......更快:) – bensiu 2011-03-21 02:31:09

+1

沒有理由將其公開。否則很好。 – 2011-03-21 02:34:38

+0

@Mthethew沒有理由*不*將其公開;訪問指定不是問題的主題。 – meagar 2011-03-21 02:36:00

0

您可以使用parent::__construct()來獲取在父類中初始化的東西。如果您在子類中沒有任何初始化內容,則可以在子類中避免__construct(),並且它會自動採用父構造。