Zunächst der vereinfachte Quellcode:
Das Problem:
Führe ich den Code wie oben beschrieben aus, werden dem Array $content z.B. bei zwei Ergebnissen der Db-Abfrage zwei Objekte 'Testzwei', mit content = null hinzugefügt. Ändere ich nun die Methode fetchContent im Objekt Test wie folgt ab,
wird im Array $content nur $content[0] = 'fooBar' eingetragen anstatt: $content[0] = 'fooBar' und $content[1] = 'fooBar'. Auch der Konstruktor von Testzwei wird jetzt nur noch einmal aufgerufen. Ich weis aber nicht warum, und wie man trotz des Aufrufs der Methode initialise() setContent für jede Ergebniszeile der Datenbank bekommt.
PHP-Code:
class Test{
private $content = array();
[...]
private function fetchContent(){
[...]
while($test_zwei = mysql_fetch_object($result, 'Testzwei')){
$this->setContent($test_zwei);
}
}
private function setContent($content){
if(is_object($content)){
$this->content[] = $content;
}
}
}
PHP-Code:
class Testzwei{
private $content = null;
public function __construct(){}
public function initialise(){
$this->fetchContent();
return $this;
}
private function fetchContent(){
$this->setContent('fooBar');
}
private function setContent($content){
$this->content = $content;
}
}
Führe ich den Code wie oben beschrieben aus, werden dem Array $content z.B. bei zwei Ergebnissen der Db-Abfrage zwei Objekte 'Testzwei', mit content = null hinzugefügt. Ändere ich nun die Methode fetchContent im Objekt Test wie folgt ab,
PHP-Code:
private function fetchContent(){
[...]
while($test_zwei = mysql_fetch_object($result, 'Testzwei')){
$this->setContent($test_zwei->initialise());
}
}

Kommentar