ich habe ein Object, das ein array mit anderern Objekten hat. Ich würde gerne in php 4.x eine reference auf ein inneres Objekt so zurückgeben, das ich die Methodenaufrufe verketten kann.
ein kleines Beispiel:
class Sardine{
var $name;
function Sardine( $name ){
$this-\>name = $name;
}
function sprich(){
echo ''sardine schweigt";
}
}
class Dose{
var sardinen = Array();
function Dose( $sardinencount ) {
for ( $i = 0; $isardinen[] = new Sardine( 'sard' . $i );
}
function &getSardineByName( $name ){
for( $i=0; $isardinen ); $i++){
if( $this-\>sardinen[$i]-\>name == $name ) return $this-\>sardinen[$i];
}
}
}
$dose = new Dose(15);
// so gehts
$fisch &= $dose-\>getSardineByName( 'sard2' );
$fisch-\>sprich();
// so geht es aergerlicherwise nicht:
$dose-\>getSardineByName( 'sard2' )-\>sprich();
Hat jemand eine Idee wie sich solche Aufrufe sinnvoll verketten lassen?
Ich brauche eine Referenz, da ich das Orginalobjekt (sardine) auch von aussen verändern können will.
($dose->getSardineByName( ‚sard2‘ )->name = ‚Herman Toothrot‘; )
Hat jemand eine Idee dazu? Ich bin mit meinem php am ende.
ich hab’ dein Beispiel mal nach korrektur der Flüchtigkeitsfehler ausgeführt und rumprobiert, bin auf genausoviel gekommen wie du, nämlich dass PHP das direkte Ansprechen von Funktionsrückgaben, die nicht in einer Variable zwischengespeichert wurden, verbietet. Das gilt nicht nur bei Referenzen und nicht nur bei Objekten:
Ich habe mir mit einer Methode von Dose beholfen, die als Argumente einen Sardienennamen, einen Sardienen-Methodennamen und n Argumente übernimmt und dann den Rückgabewert durchschleift.