2016-03-18 136 views
1

我有以下PHP類:從屬性在PHP中的子對象訪問父方法?

class a { 
    public function vw($xc) { 
     return $xc; 
    } 
} 

class b extends a { 
    public function wv() { 
     echo vw() . 'from b via wv'; 
    } 
} 

$d = new a; 
echo $d->vw('this is a'); 
$c = new b; 
echo $c->vw('this is a from b via a'); 
$c->wv(); 

我得到的輸出是:

this is a 

爲什麼我沒有得到的echo $c->vw('this is a from b via a');c->wv();輸出?

+1

能否請你格式化代碼並修正錯誤(在那裏沒有'test'或't'類)? – Jan

+0

對不起@jan –

+0

*「爲什麼我沒有得到echo $ c-> vw的輸出('這是一個從b經過a');和c-> wv();?」 - - 因爲腳本觸發'echo vw()行上的致命錯誤。 '從b通過wv';'。沒有函數'vw()',這會讓你的腳本崩潰。啓用[錯誤報告](http://php.net/manual/en/function.error-reporting.php)。不要閉上眼睛過馬路! – axiac

回答

2

您可以通過parent::,例如訪問父的方法parent::vw()。但類a的方法vw需要一個參數,所以這段代碼根本不起作用。但是你應該明白使用父關鍵字。

class a { 
    public function vw($xc) { 
     return $xc; 
    } 
} 

class b extends a { 
    public function wv() { 
     echo parent::vw() . 'from b via wv'; 
    } 
} 

$d = new a; 
echo $d->vw('this is a'); 
$c = new b; 
echo $c->vw('this is a from b via a'); 
$c->wv(); 

http://php.net/manual/en/keyword.parent.php

https://3v4l.org/0MkQI

0

在 「B」 類,你應該寫的功能VW爲:

public function wv(){ 
    echo $this->vw() . "from b via wv\n"; 
    } 

此外,在最後一行的$ C-> WV()調用缺少參數: $ C- > wv(「我是一個缺少的參數」);

0

試試這個

 class a { 
      public tt; 

       public function vw($xc){ 
        $this->tt = $xc; 
      return $this->tt; 
     } 
} 

class b extends a 
{ 
    public function(){ 
    return $this->tt. 'from b via wv' 
} 
}