Hellihello
wenn ich in der Basisklasse eine private Variable als Liste definiere und diese über eine Funktion ausgebe funktioniert das erstmal. Wenn ich aber in der erbenden Klasse diese Liste erweitere, spuckt mir die ausgebende Funktion nur die Liste aus der Basisklasse aus. Mache ich das mit einer öffentlichen Variable klappts (code s.u.). Kann mir jemand erklären, warum?
Dank und Gruß,
frankx
class Basis {
private $Liste=array();
public $Liste1=array();
function __construct() {
$this->Liste["Feld1"]="Wert1";
$this->Liste1["Feld1"]="Wert1";
}
function ausgeben(){
return $this->Liste;
}
}
class Erbe extends Basis {
function __construct() {
parent::__construct();
$this->Liste["Feld2"]="Wert2";
$this->Liste1["Feld2"]="Wert2";
}
function erbeausgeben() {
return $this->Liste;
}
}
$basis=new Basis;
$erbe=new Erbe;
echo "\n+++\n";
var_dump($basis->ausgeben());
echo "\n+++\n";
var_dump($erbe->ausgeben());
echo "\n+++\n";
var_dump($erbe->erbeausgeben());
echo "\n+++\n";
var_dump($erbe->Liste1);
Bringt output:
var_dump($basis->ausgeben());
+++
array(1) {
["Feld1"]=>
string(5) "Wert1"
}
var_dump($erbe->ausgeben());
+++
array(1) {
["Feld1"]=>
string(5) "Wert1"
}
obwohl die Liste erweitert wurde
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?)
var_dump($erbe->Liste1);
+++
array(2) {
["Feld1"]=>
string(5) "Wert1"
["Feld2"]=>
string(5) "Wert2"
}
mit der öffentlichen Liste1 gehts...;