PHP: yield is here!

Und gibt uns so viel mehr zurück ...

Was freue ich mich über das Feature in php 5.5: yield! Gut, klingt jetzt erst mal als Wort nicht sonderlich spannend. Es ist zugegeben auch nicht sehr umfangreich, aber für mich als Entwickler ist die Möglichkeit eine super Ergänzung.

Was macht man normalerweise, wenn man eine Liste an eine andere Funktion übergeben will? In gefühlt 98% der Fälle wird ein mit einer Schleife ein Array erstellt, in einem 1% macht man vielleicht ein Objekt draus und im übrigen Prozent der Fälle überlegt man es vielleicht doch anders zu machen. Der Nachteil ist natürlich generell, dass ein Array oder Objekt im Speicher liegt. Habe ich also Daten, die ich dann noch in ein Array/Object umpacke, um es in einem bestimmten Format an eine andere Funktion zu übergeben, habe ich gleich wieder neue Daten im Speicher liegen. Und jetzt kommt yield ins Spiel!

Mit der neuen Rückgabeart kann prinzipiell return ersetzt werden, yield gibt dann sequenziell Daten zurück. In Schleifen verwendet können so einfach, und vor allem ohne den Speicher zu belasten, Daten zurückgegeben und weiter verarbeiten.

Einfaches Beispiel

function myHeavyDataFunction() {
    $someVeryHeavyLoadOfData = array(1,2,3);

    foreach ($someVeryHeavyLoadOfData as $singleData) {
        // some data editing
        $singleData = "loop: " . $singledata . "\n";

        // yield single data
        yield $singleData;
    }
}

foreach (myHeavyDataFunction() as $single) {
    echo $single;
}

Ausgabe

loop: 1
loop: 2
loop: 3

Ich find's super! :)

Es gibt aber mit php 5.5 noch andere schöne Neuerungen. Eine Übersicht über neue Features findet man hier. Lohnt sich immer bei neuen Versionen mal einen Blick zu riskieren.

Share:

Einen Kommentar verfassen

Ihre E-Mail-Adresse wird nicht veröffentlicht, sie dient nur der Identifikation! Für die Profilbilder wird Gravatar verwendet und reCAPTCHA, um Spam zu vermeiden.

Kommentare 0

Es sind noch keine Kommentare für diesen Beitrag vorhanden.