2016-12-25 5 views
1

Es gibt eine Klasse:So speichern Sie den Status der Instanzklasse?

Class A { 
    public function Q(){ 
     return value; 
    } 
} 

In Schleife erstellen ich einige Exemplare der Klasse A:

while ($i < 5){ 
    $obj_$i = new A(); 
    $obj_$i->Q(); 
} 

Wo kann ich alle Ergebnisse von $obj_$i->Q(); für jede Iteration auf Schleife sparen?

Weil ich nach dem ich diese Objekte in eine andere Klasse umwandeln muss.

Class B { 
    public function Result(){ 
     return $obj_$i + 3; 
    } 

} 
+0

Schieben Sie es auf ein Array. –

+0

Ich möchte nur Objekte betreiben – Huligan

+0

Was möchten Sie mit dieser Anweisung tun, 'return $ obj_ $ i + 3;'? –

Antwort

1

ein Array erstellen und um die Objekte zu diesem Array in jeder Iteration von while() Schleife schieben, wie folgt aus:

$objArray = array(); 
while ($i < 5){ 
    $objArray[] = new A(); 
} 

Später passieren dieses Feld zu Result() Methode der Klasse B zur Weiterverarbeitung,

class B { 
    public function Result($objArray){ 
     foreach($objArray as $obj){ 
      // your code 
     } 
    } 
} 
+0

Gibt es eleganter OOP-Methode, um das zu tun? Ich meine Muster, mögliche Musterabhängigkeit? – Huligan

+1

@Huligan Im Moment ist es nicht ganz klar, was Sie erreichen wollen. Wenn Sie jedoch das $ objArray-Array ausgiebig innerhalb der Klasse "B" verwenden/manipulieren möchten, sollten Sie das * Dependency-Injection-Muster verwenden, dh eine Instanzvariable beibehalten, die dieses $ objArray enthält, und während das Objekt konstruiert wird Klasse "B" übergeben Sie dieses Array an die Konstruktormethode und weisen Sie dieses Array der Instanzvariablen zu. Auf diese Weise können Sie leichter auf dieses Array im gesamten Bereich eines Objekts zugreifen. –

Verwandte Themen