2014-06-05 63 views
0

我試圖訪問它的子類中的父類屬性,但我不斷收到此錯誤致命錯誤:未定義類常量'臂'blabla.php 26行。 這是我下面的代碼blabla.php如何訪問擴展類中的父級PHP類屬性

blabla.php

<?php 
class mother 
{ 
    public $legs; 
    public $arms; 
    public $eyes; 


    function say($arm,$eye,$leg) 
    { 
    $this->arms = 'pretty'; 
    $this->eyes = 'stunning'; 
    $this->legs = 'beautiful slim'; 
    } 
    } 


class daughter extends mother 
{ 
public $newArms; 
public $newEyes; 
public $newLegs; 

public function newSay() 
{ 
    $this->newArms = parent::arms; 
    $this->newEyes = parent::eyes; 
    $this->newLegs = parent::legsparent::arms; 
    echo 'I have a beautiful daughter who has '.$this->newArms.' arms, '.$this->newEyes.' eyes and '.$this->newLegs.' legs'; 
} 

} 


$baby = new daughter(); 
$baby->newSay(); 


?> 

如果在我的代碼錯誤,請告訴我,如何糾正它。 在此先感謝。

+0

您正在犯一個根本性錯誤。女兒不應該延長母親。一位母親有一個女兒,女兒是一個新的實體,不是母親的延伸。 – vascowhite

回答

1

你的語法錯了。

ClassName::NAME 

用於訪問類常量,如您的errormessage所述。

在類的主體中使用const關鍵字定義類常量。

但是,您想要訪問對象的屬性。您必須爲此使用$this

方法體內:$this->propertyName。您必須確保該屬性對其子類是可見的,因此您需要將其設爲受保護或公開,或者實施魔術__get方法或定義自定義getter和setter,並調用它們而不是實際屬性。

您也不要使用parent關鍵字。 parent總是查找父類的靜態字段,並且通常不綁定到實例。 (但是,您可以使用它在其子類的上下文中調用父類的方法)

+0

似乎是這樣。現在更正。只是想顯示他使用的語法實際上是什麼意思。 – Rangad

+0

再次感謝。我找到了你,這意味着我只能通過函數,__get()和__set()來訪問這些屬性。 –

+0

我得到它的工作只是它比我計劃更多的編碼特別是當試圖訪問許多**母親的屬性**非常感謝。 –