2014-06-05 64 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

我得到它的工作只是它比我计划更多的编码特别是当试图访问许多**母亲的属性**非常感谢。 –