Die Rolle und Beispiele des Yield-Schlüsselworts in PHP

WBOY
Freigeben: 2023-06-28 18:48:02
Original
1430 Leute haben es durchsucht

Das Schlüsselwort yield in PHP ist ein Schlüsselwort, das in PHP 5.5 eingeführt wurde. Es kann zum Erstellen eines Generators innerhalb einer Funktion verwendet werden. Generatoren können verwendet werden, um einen großen Datensatz zu durchlaufen, ohne den gesamten Datensatz auf einmal in den Speicher zu laden.

Das Schlüsselwort yield wird verwendet, um die aktuelle Funktion in eine Generatorfunktion umzuwandeln. Innerhalb der Generatorfunktion können wir die yield-Anweisung verwenden, um einen Wert an den Aufrufer zurückzugeben, und der Ausführungsstatus der Generatorfunktion wird gespeichert. Beim nächsten Aufruf der Generatorfunktion wird die Ausführung ab der letzten yield-Anweisung fortgesetzt.

Als nächstes veranschaulichen wir die Rolle des Yield-Schlüsselworts anhand eines Beispielcodes.

Zuerst erstellen wir eine einfache Generatorfunktion, um eine Folge von ganzen Zahlen von 1 bis 10 zu generieren:

function generateNumbers() {
    for ($i = 1; $i <= 10; $i++) {
        yield $i;
    }
}

foreach (generateNumbers() as $number) {
    echo $number . " ";
}
Nach dem Login kopieren

Die Ausgabe des obigen Codes lautet: 1 2 3 4 5 6 7 8 9 10

In diesem Beispiel die generierten Zahlen ()-Funktion gibt ein Generatorobjekt zurück. Wir durchlaufen dieses Generatorobjekt durch eine foreach-Schleife und jeder Durchlauf gibt einen Wert aus der yield-Anweisung zurück. Dies hat den Vorteil, dass nicht die gesamte Sequenz auf einmal im Speicher abgelegt werden muss, sondern die entsprechenden Werte bei Bedarf generiert und zurückgegeben werden.

Als nächstes schauen wir uns ein praktischeres Beispiel an. Angenommen, wir müssen eine sehr große Datei lesen, aber das gleichzeitige Laden der gesamten Datei in den Speicher führt zu Problemen mit dem Speicherüberlauf. Zu diesem Zeitpunkt können wir die Generatorfunktion verwenden, um die Datei Zeile für Zeile zu lesen:

function readFileByLine($file) {
    $handle = fopen($file, "r");
    
    if ($handle) {
        while (($line = fgets($handle)) !== false) {
            yield $line;
        }
        
        fclose($handle);
    }
}

foreach (readFileByLine("big_file.txt") as $line) {
    echo $line;
}
Nach dem Login kopieren

Der obige Code liest den Inhalt der Datei Zeile für Zeile und gibt den Inhalt jeder Zeile an den Aufrufer zurück. Auf diese Weise können wir jeweils eine Zeile lesen, ohne die gesamte Datei auf einmal in den Speicher zu laden.

Neben der Verwendung des Schlüsselworts yield innerhalb einer Funktion zum Erstellen einer Generatorfunktion kann das Schlüsselwort yield auch mit iterierbaren Objekten verwendet werden, um komplexere Funktionen zu implementieren. Über das Schlüsselwort yield können wir unsere eigenen Iterationsregeln definieren und benutzerdefinierte Durchlaufmethoden bereitstellen.

Zusammenfassend lässt sich sagen, dass die Funktion des Schlüsselworts yield in PHP darin besteht, eine Generatorfunktion zu erstellen, um bei Bedarf Werte zu generieren und zurückzugeben. Generatorfunktionen können in Szenarien wie dem Durchlaufen großer Datensätze oder dem zeilenweisen Lesen großer Dateien verwendet werden, um den Speicheraufwand zu reduzieren. Die Verwendung des Schlüsselworts yield kann die Effizienz der Codeausführung verbessern und den Speicherverbrauch reduzieren.

Das obige ist der detaillierte Inhalt vonDie Rolle und Beispiele des Yield-Schlüsselworts in PHP. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage