2016-03-18 6 views
1

Ich habe folgende PHP Klassen:Zugriff Elternmethode von Kindobjekt mit Attributen in 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(); 

Der Ausgang ich immer bin, ist:

this is a 

Warum bin ich nicht die Ausgänge von echo $c->vw('this is a from b via a'); und c->wv(); bekommen?

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

Außerdem in der letzten Zeile den Aufruf von $ c-> wv() fehlt ein Parameter:

+1

Können Sie bitte den Code zu formatieren und die Fehler (keine 'test' oder' T' Klasse drin) korrekt? – Jan

+0

sorry über das @jan –

+0

* "Warum bekomme ich nicht die Ausgaben von echo $ c-> vw ('das ist ein von b über a'); und c-> wv();?" * - weil die Skript löst einen schwerwiegenden Fehler in der Zeile 'echo vw()' aus. 'von b über wv'; '. Es gibt keine Funktion 'vw()' und das Skript stürzt ab. Aktivieren Sie [Fehler melden] (http://php.net/manual/en/function.error-reporting.php). Überquere die Straße nicht mit geschlossenen Augen! – axiac

Antwort

2

können Sie eine Methode des übergeordneten Zugriff über parent::, z.B. parent::vw(). Aber die Methode vw der Klasse a erwartet einen Parameter, so dass dieses Code-Snippet überhaupt nicht funktioniert. Aber Sie sollten die Idee haben, das Eltern-Schlüsselwort zu verwenden.

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

In der Klasse "b", sollten Sie die Funktion vw als schreiben $ c- > wv ("Ich bin ein fehlender Parameter");

0

Versuchen Sie, diese

 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' 
} 
} 
Verwandte Themen