Welkom bij VeiligLanceren.nl

PHP yield uitgelegd: efficiënter programmeren met generators

PHP yield uitgelegd: efficiënter programmeren met generators
Door Niels Hamelink

PHP yield uitgelegd: efficiënter programmeren met generators

Veel PHP-developers werken dagelijks met loops en arrays, maar niet iedereen kent de kracht van yield. Deze keyword opent de deur naar generators, een feature die je code sneller en efficiënter maakt – vooral bij grote datasets of streamingprocessen.

In dit artikel leggen we stap voor stap uit wat yield doet, hoe je het toepast en waarom het vaak beter is dan traditionele arrays.


Wat is yield in PHP?

yield is een PHP keyword dat een generator aanmaakt. In plaats van een hele dataset in het geheugen te laden, levert een generator telkens één waarde op wanneer erom wordt gevraagd.

Kort gezegd:

  • Met return geef je één waarde terug en stopt de functie.

  • Met yield kun je meerdere waarden stap voor stap teruggeven, zonder dat je alles tegelijk in het geheugen hoeft te laden.


Eenvoudig voorbeeld van yield

function getNumbers() {
    for ($i = 1; $i <= 5; $i++) {
        yield $i;
    }
}

foreach (getNumbers() as $number) {
    echo $number . PHP_EOL;
}

Wat gebeurt hier?

  • De functie getNumbers() lijkt op een normale functie, maar gebruikt yield.

  • Elke keer dat de loop een waarde opvraagt, geeft de generator een getal terug.

  • Het geheugen wordt niet gevuld met een array [1,2,3,4,5], maar er wordt telkens één waarde berekend.


Voordelen van yield

  1. Efficiënt geheugenbeheer
    Bij grote datasets hoef je niet alles tegelijk in een array te stoppen. Handig bij miljoenen records of logbestanden.

  2. Lazy evaluation
    Data wordt pas opgehaald wanneer je het nodig hebt. Dit kan ook nuttig zijn bij API-calls of databasequeries.

  3. Betere performance
    Minder geheugenverbruik betekent vaak snellere scripts.


Praktisch voorbeeld: grote CSV inlezen

function readCsv($filename) {
    $handle = fopen($filename, 'r');
    while (($row = fgetcsv($handle)) !== false) {
        yield $row;
    }
    fclose($handle);
}

foreach (readCsv('data.csv') as $line) {
    // Verwerk de regel
    echo $line[0] . PHP_EOL;
}

👉 Zonder yield zou je eerst het hele CSV-bestand in een array moeten laden. Met yield verwerk je de file regel voor regel.


yield met keys gebruiken

Net als arrays kun je ook keys meegeven:

function getUsers() {
    yield 'first' => 'Een';
    yield 'second' => 'Twee';
}

foreach (getUsers() as $key => $user) {
    echo "$key: $user" . PHP_EOL;
}

Output:

first: Een
second: Twee

Wanneer gebruik je yield?

Gebruik yield vooral wanneer:

  • Je grote datasets wilt verwerken (CSV, logbestanden, API’s).

  • Je streams of data in real-time wilt afhandelen.

  • Je efficiënt geheugen wilt gebruiken.

Voor kleine arrays is een gewone return vaak eenvoudiger en net zo effectief.


Conclusie

Met yield in PHP kun je slimme, schaalbare en efficiënte code schrijven. Het is ideaal voor grote datasets en voorkomt onnodig geheugenverbruik. Als je werkt aan moderne PHP-applicaties of SaaS-oplossingen, is dit een techniek die je niet mag missen.

👉 Wil jij meer leren over schaalbare PHP-ontwikkeling of maatwerk software? Bekijk onze maatwerk software ontwikkeling en Laravel ontwikkeling diensten.

Veelgestelde vragen

Wat is het verschil tussen yield en return in PHP?

Return stopt een functie direct en geeft één waarde terug. Yield geeft een waarde terug maar houdt de functie actief, zodat meerdere waarden stap voor stap geleverd kunnen worden.

Wanneer moet ik yield gebruiken?

Gebruik yield bij grote datasets, streaming data of wanneer je geheugen wilt besparen.

Is yield sneller dan arrays?

Niet altijd sneller in ruwe snelheid, maar vaak efficiënter omdat je minder geheugen gebruikt.

Werkt yield ook met databasequeries?

Ja. Je kunt bijvoorbeeld resultaten uit een PDO-statement rij voor rij teruggeven.

Sinds welke PHP-versie bestaat yield?

Yield is geïntroduceerd in PHP 5.5 en werkt in alle moderne PHP-versies.

Niels Hamelink

Niels Hamelink

Niels Hamelink is de CEO van VeiligLanceren.nl en specialist in het bouwen van schaalbare, conversiegerichte websites en AI-tools voor startende ondernemers. Met een passie voor automatisering en slimme lanceringen helpt hij bedrijven online professioneel van start te gaan.

Deel dit artikel: