Generatorer introducerades i PHP 5.5 för att förenkla implementeringen av iteratorer med hjälp av nyckelordet yield, vilket minskar komplexiteten jämfört med att implementera Iterator-gränssnittet direkt. Funktioner som innehåller yield returnerar omedelbart ett Generator-objekt som implementerar Iterator-gränssnittet, vilket möjliggör lat exekvering och pausning/återupptagning vid varje yield-punkt. Utöver enkel iteration kan generatorer använda metoderna send() och throw() för att skicka data tillbaka in i generatorn eller kasta undantag, vilket möjliggör mer avancerade mönster som korutiner. PHP 7.0 förbättrade generatorer genom att tillåta dem att returnera värden, en funktion som är avgörande för asynkrona ramverk som Amp, där korutiner returnerar "promises" och en "generator runner" hanterar deras exekvering. Asynkrona ramverk som utnyttjar generatorer, som Amp, möjliggör skrivning av icke-blockerande kod som ser ut som blockerande kod, vilket underlättar samtidiga I/O-operationer som parallella HTTP-förfrågningar.