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 gebruiktyield
.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
Efficiënt geheugenbeheer
Bij grote datasets hoef je niet alles tegelijk in een array te stoppen. Handig bij miljoenen records of logbestanden.Lazy evaluation
Data wordt pas opgehaald wanneer je het nodig hebt. Dit kan ook nuttig zijn bij API-calls of databasequeries.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 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.