hi,
mir ist nicht klar, wie in PHP vererbt wird. In JAVA werden alle Methoden vererbt. in PHP nicht? finde zu extends keine wirklich deutlichen docs bei php.net 
geht um php4
warum funktioniert mein unteres beispiel nicht???
class vater{
function eins($var1, $var2){
$sum = $var + $var2;
return $sum;
}
}
class kind extends vater{
function zwei($var1,$var2){
get\_parent\_class($this)-\>eins($var1,$var2);
}
}
$check = new kind();
$result = $check-\>zwei(1,2);
echo "das ergebnis ist: ".$result;
Hi PixelKönig,
warum funktioniert mein unteres beispiel nicht???
So wie Du es angegeben hast, sollte das ohne ‚get_parent_class‘ funktionieren, also nur mit
$this-\>eins($var1, $var2);
in der Klasse „Kind“. Die Methoden werden bei extends alle in die neue Klasse vererbt, Method-Overloading wird nicht unterstützt in PHP4.
Dein Beispiel erzeugt auch keine Ausgabe, solange die Funktion ‚zwei‘ keinen Rückgabewert hat, die Zeile sollte also sein:
return $this-\>eins($var1, $var2);
Schönen Gruß,
Rudy
hu rudy,
return $this-\>eins($var1, $var2);
warum brauche ich da einen rueckgabewert?
das sollte eigentlich ein funktionsaufruf werden.
und die funktion „eins“ sollte sich um alles kuemmern?
grusz
PixelKoenig
Hi Pixelkönig,
return $this->eins($var1, $var2);
warum brauche ich da einen rueckgabewert?
Deshalb:
$result = $check-\>zwei(1,2);
echo "das ergebnis ist: ".$result;
Wenn „zwei“ nichts zurückgibt, keine Ausgabe.
das sollte eigentlich ein funktionsaufruf werden.
und die funktion „eins“ sollte sich um alles kuemmern?
Funktion „zwei“ übergibt die Variablen $var1 und $var2 and die vererbte Funktion „eins“, die bildet die Summe und gibt das Ergebnis an „zwei“ zurück. Danach muss „zwei“ etwas mit dem Ergebnis machen, sonst gibt das $result = $check->zwei(…) keinen Sinn.
Schönen Gruß,
Rudy
Guten Morgen,
in PHP4 gabs auch schon das keyword „parent“
also konkret:
class A {
function foo () {
}
}
class B extends A {
function foo () {
parent::foo();
}
}
das ganze bei php.net
http://www.php.net/manual/en/keyword.extends.php
gruß thomas
[Bei dieser Antwort wurde das Vollzitat nachträglich automatisiert entfernt]