Apr 19 2011

Mehrere Zend Cycle Helper im Einsatz

Falls ihr euch schon mit dem Cycle Helper von Zend beschäftigt habt, werdet ihr irgendwann an den Punkt kommen, wo ihr mehrere “cycles” in einer Ausgabeseite verwenden möchtet. Dazu sieht der Helper vor, dass man Namen für jeden Cycle vergibt. Wählt man diese nicht, wird der default Name verwendet. Dies kann wiederum zu nervigen Seiteneffekten führen. Hierzu ein kleines Beispiel:

Sieht auf den ersten Blick nicht unbedingt falsch aus. An dieser Stelle sollte man jedoch wissen, dass der zweite next() Aufruf problematisch ist. Um das Problem zu lösen verwendet man Namen für jeden Cycle, in etwa so:

Was mir neulich auch noch passiert ist, ist eine falsche Ausgabe des Ergebnisses. Bei einem echo auf den cycle()->next() Aufruf wird automatisch die toString() Methode des Helpers aufgerufen. Möchte man nun mit Variablen arbeiten, wird es auch hier leicht verwirrend, wenn man dies nicht im Hinterkopf behält. Dazu auch ein kleines Beispiel:

// Hiermit erhalten wir lediglich das helper Objekt
$output = $this->Cycle(array('blue', 'red'))->next();

// Eigentlich möchten wir aber dies hier
$output = $this->Cycle(array('blue', 'red'))->next()->toString();

// Ausgabe im Verbund funktioniert beim ersten Beispiel nicht...
echo 'Text' . $output;

// Bei einem direkten echo alledings schon
echo $output;

Ich wünsche viel Spaß beim Ausprobieren und viel Erfolg bei der Entwicklung neuer SuperApplikationen ;)