Antwort: Generatoren und Iteratoren sind spezielle Funktionen und Objekte, die Werte einzeln generieren können, ohne den gesamten Datensatz zu speichern. Generator: Erzeugt eine Reihe von Werten, einen Wert für jeden Aufruf. Iterator: Bietet eine Methode für den Zugriff auf Sammlungselemente und generiert beim Durchlaufen ein Element. Wird zum Seitenwechsel verwendet, um Datensätze Seite für Seite zu generieren, ohne die gesamten Daten zu speichern im Gedächtnis verankert.
Erweiterte PHP-Funktionen: Die magische Verwendung von Generatoren und Iteratoren
Generator
Ein Generator ist eine spezielle Funktion, die zum Generieren einer Reihe von Werten verwendet wird. Im Gegensatz zu regulären Funktionen können Generatoren bei jedem Aufruf einen Wert erzeugen, ohne das gesamte Wertearray im Speicher zu speichern.
function numbersGenerator() { for ($i = 1; $i <= 10; $i++) { yield $i; } } foreach (numbersGenerator() as $number) { echo $number . "\n"; }
Iterator
Ein Iterator ist ein Objekt, das eine Möglichkeit bietet, auf Elemente in einer Sammlung zuzugreifen. Wie Generatoren können Iteratoren ein Element generieren, während sie eine Sammlung durchlaufen, ohne die gesamte Sammlung im Speicher zu speichern.
class NumberIterator implements Iterator { private $start; private $end; private $current; public function __construct($start, $end) { $this->start = $start; $this->end = $end; $this->current = $start; } public function rewind() { $this->current = $this->start; } public function current() { return $this->current; } public function key() { return $this->current; } public function next() { $this->current++; } public function valid() { return $this->current <= $this->end; } } $iterator = new NumberIterator(1, 10); foreach ($iterator as $number) { echo $number . "\n"; }
Praktischer Fall: Paginator
Generatoren und Iteratoren eignen sich sehr gut für Paging-Szenarien. Durch die Verwendung von Generatoren oder Iteratoren können wir den Datensatz Seite für Seite generieren, ohne den gesamten Datensatz im Speicher zu speichern.
function paginate($query, $pageSize) { $page = 1; while (true) { $offset = ($page - 1) * $pageSize; $results = $query->offset($offset)->limit($pageSize)->execute(); if (count($results) === 0) { break; } yield $results; $page++; } } foreach (paginate($query, 10) as $page) { echo "Page $page\n"; foreach ($page as $result) { // Process the result } }
Das obige ist der detaillierte Inhalt vonErweiterte PHP-Funktionen: die wunderbaren Einsatzmöglichkeiten von Generatoren und Iteratoren. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!