echo $begrüßung;
wenn ich in der Basisklasse eine private Variable als Liste definiere und diese über eine Funktion ausgebe funktioniert das erstmal.
Ja, denn auf private Elemente kann innerhalb der gleichen Klasse zugegriffen werden.
Wenn ich aber in der erbenden Klasse diese Liste erweitere, spuckt mir die ausgebende Funktion nur die Liste aus der Basisklasse aus.
Erbende Klassen haben keinen Zugriff auf private Mitglieder der Basisklasse.
Was macht PHP, wenn es auf eine Variablennamen trifft, den es (noch) nicht kennt?
Mache ich das mit einer öffentlichen Variable klappts (code s.u.). Kann mir jemand erklären, warum?
Elemente, die public oder protected deklariert wurden, sind in abgeleiteten Klassen verfügbar.
var_dump($erbe->ausgeben());
+++
array(1) {
["Feld1"]=>
string(5) "Wert1"
}
obwohl die Liste erweitert wurde
Sie wurde nicht erweitert. Der $erbe hat eine neue Objekt-Variable namens Liste angelegt, weil er auf die Klassen-Variable (beachte bitte den Unterschied zwischen Klassen- und Objekt-Variable) namens Liste der Basisklasse ja keinen Zugriff hat.
var_dump($erbe->erbeausgeben());
+++
array(1) {
["Feld2"]=>
string(5) "Wert2"
}
bringt nun nur den Teil, der in der erbenden Klasse erweitert wurde (hat "$this" zwei Bedeutungen?)
Bringt nur den Inhalt der Objekt-Variable $erbe->Liste.
Schau dir mal die beiden Objekte $basis und $erbe komplett an: var_dump($basis, $erbe);
Du siehst dann in $erbe Liste zweimal, einmal als private und zum zweiten als public
echo "$verabschiedung $name";