Heim Backend-Entwicklung PHP-Tutorial Analyse von Iteratoren und Generatoren in PHP und Einführung in deren Vor- und Nachteile

Analyse von Iteratoren und Generatoren in PHP und Einführung in deren Vor- und Nachteile

Aug 11, 2018 pm 04:57 PM
php 迭代器

Was dieser Artikel Ihnen bringt, ist die Analyse und Einführung der Vor- und Nachteile von Iteratoren und Generatoren. Ich hoffe, dass er einen gewissen Referenzwert hat Dir helfen.

1. Iterator

Analyse: Denken Sie darüber nach, ob Sie das Sammlungsobjekt und die Operationen darauf platzieren Sammlungsobjekt: Wenn wir die Elemente im Sammlungsobjekt auf andere Weise durchlaufen möchten, müssen wir das Sammlungsobjekt ändern, was gegen das „Prinzip der Einzelverantwortung“ verstößt, und das Iteratormuster trennt die Datenstruktur und den Algorithmus der Daten Struktur, und die beiden können unabhängig voneinander entwickelt werden.

Vorteile:

1. Unterstützt mehrere Traversierungsmethoden. Beispielsweise stellen wir in einer geordneten Liste je nach Bedarf zwei Iteratoren für die Durchquerung in Vorwärtsrichtung und die Durchquerung in umgekehrter Reihenfolge bereit. Benutzer müssen nur unseren Iterator dazu bringen, Durchlaufoperationen für die Sammlung durchzuführen

2. Vereinfachte Aggregatklassen. Aufgrund der Einführung von Iteratoren muss das ursprüngliche Sammlungsobjekt die Sammlungselemente nicht selbst durchlaufen

3 Es ist sehr praktisch, neue Aggregationsklassen und Iteratorklassen hinzuzufügen, und die beiden Dimensionen können unabhängig voneinander geändert werden

4. Stellen Sie eine einheitliche Schnittstelle für verschiedene Sammlungsstrukturen bereit und unterstützen Sie so den gleichen Algorithmus für die Arbeit mit verschiedenen Sammlungsstrukturen

Nachteile:

1. Iteration Das Iteratormuster trennt die Verantwortlichkeiten für das Speichern von Daten und das Durchlaufen von Daten. Wenn Sie ein neues Sammlungsobjekt hinzufügen, erhöht sich die Anzahl der Klassen paarweise, was die Systemkomplexität bis zu einem gewissen Grad erhöht

Spezifische Schnittstelle:

Iterator extends Traversable {
/* 方法 */
abstract public mixed current ( void )
abstract public scalar key ( void )
abstract public void next ( void )
abstract public void rewind ( void )
abstract public bool valid ( void )
}
Nach dem Login kopieren

2. Generator

PHP-Generator (Generator) ist eine Funktion, die in PHP5.5.0 eingeführt wurde, im Gegensatz zu Standard-PHP-Iteratoren nicht require Die Klasse implementiert die Iterator-Schnittstelle, wodurch die Belastung der Klasse verringert wird. Der Generator berechnet und gibt die zu iterierenden Werte entsprechend den Anforderungen aus. Stellen Sie sich vor, dass der Standard-PHP-Iterator häufig ausgeführt wird Iterationsoperationen im Speicher haben eine geringe Leistung; wenn eine bestimmte Methode zur Berechnung einer großen Datenmenge verwendet wird, ist die Auswirkung auf die Leistung noch größer. Zu diesem Zeitpunkt können wir den Generator verwenden, um nachfolgende Werte sofort zu berechnen und auszugeben, ohne wertvolle Speicherressourcen zu belegen.

Vorteile: Benötigt weniger Speicher und bietet eine gute Leistung. Der interne Zustand des Generators wird jedes Mal angehalten, wenn er einen Wert erzeugt; er wird wiederhergestellt, wenn der Generator den nächsten Wert anfordert. Die Interna des Generators wechseln so lange zwischen Pause und Fortsetzen, bis die Schleife abgeschlossen ist oder die Pausenposition erreicht ist.

Nachteile:

1 Der PHP-Generator kann nicht die Anforderungen aller Iteratoren erfüllen, da er nicht abgefragt wird, weiß der Generator nie, welcher Wert als nächstes durchlaufen werden soll, und es gibt keine Möglichkeit, im Generator vor- oder zurückzugehen.

2. Der Generator ist immer noch einmalig und derselbe Generator kann nicht mehrmals wiederholt werden. Der Generator kann jedoch bei Bedarf neu erstellt oder geklont werden.

Generator erstellen:

1 Da der Generator eine PHP-Funktion ist, verwendet der Generator das Schlüsselwort yield in der Funktion. Im Gegensatz zu gewöhnlichen PHP-Funktionen geben Produzenten niemals Werte zurück, sondern erzeugen nur Werte.

<?php
function myGenerator(){
    yield &#39;a&#39;;
    yield &#39;b&#39;;
    yield &#39;c&#39;;
}
Nach dem Login kopieren

2. Beim Aufruf der Generatorfunktion gibt PHP ein Objekt zurück, das zur Generator-Klasse gehört. Dieses Objekt kann mit der Funktion foreach() iteriert werden. Für jede Iteration fordert PHP die Generator-Instanz auf, den nächsten zu iterierenden Wert zu berechnen und bereitzustellen

<?php
function makeRange($length){
    for($i = 0; $i<$length; $i++){
        yield $i;
    }
}

foreach(makeRange(1000000) as $i){
    echo $i,PHP_EOL;
}
Nach dem Login kopieren

wie oben gezeigt: Wenn $length groß ist (Millionen) und Sie gleichzeitig keinen Generator verwenden Dann müssen Sie vorab Speicher für ein Array zuweisen, das aus einer Million bis eintausendfünf Ganzzahlen besteht. Der PHP-Generator kann die gleiche Operation ausführen, reserviert jedoch jeweils nur Speicher für eine Ganzzahl.

Verwandte Empfehlungen:

PHP verwendet Bitoperationen, um Addition, Subtraktion und Multiplikation zu implementieren und Division von ganzen Zahlen und Test (Codebeispiel)

Code für einfache Interaktion zwischen PHP und HTML-Formular

Das obige ist der detaillierte Inhalt vonAnalyse von Iteratoren und Generatoren in PHP und Einführung in deren Vor- und Nachteile. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

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

Heiße KI -Werkzeuge

Undresser.AI Undress

Undresser.AI Undress

KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover

AI Clothes Remover

Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Undress AI Tool

Undress AI Tool

Ausziehbilder kostenlos

Clothoff.io

Clothoff.io

KI-Kleiderentferner

AI Hentai Generator

AI Hentai Generator

Erstellen Sie kostenlos Ai Hentai.

Heißer Artikel

R.E.P.O. Energiekristalle erklärten und was sie tun (gelber Kristall)
2 Wochen vor By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Beste grafische Einstellungen
2 Wochen vor By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. So reparieren Sie Audio, wenn Sie niemanden hören können
2 Wochen vor By 尊渡假赌尊渡假赌尊渡假赌

Heiße Werkzeuge

Notepad++7.3.1

Notepad++7.3.1

Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 chinesische Version

SublimeText3 chinesische Version

Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1

Senden Sie Studio 13.0.1

Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6

Dreamweaver CS6

Visuelle Webentwicklungstools

SublimeText3 Mac-Version

SublimeText3 Mac-Version

Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

CakePHP-Projektkonfiguration CakePHP-Projektkonfiguration Sep 10, 2024 pm 05:25 PM

In diesem Kapitel werden wir die Umgebungsvariablen, die allgemeine Konfiguration, die Datenbankkonfiguration und die E-Mail-Konfiguration in CakePHP verstehen.

PHP 8.4 Installations- und Upgrade-Anleitung für Ubuntu und Debian PHP 8.4 Installations- und Upgrade-Anleitung für Ubuntu und Debian Dec 24, 2024 pm 04:42 PM

PHP 8.4 bringt mehrere neue Funktionen, Sicherheitsverbesserungen und Leistungsverbesserungen mit einer beträchtlichen Menge an veralteten und entfernten Funktionen. In dieser Anleitung wird erklärt, wie Sie PHP 8.4 installieren oder auf PHP 8.4 auf Ubuntu, Debian oder deren Derivaten aktualisieren. Obwohl es möglich ist, PHP aus dem Quellcode zu kompilieren, ist die Installation aus einem APT-Repository wie unten erläutert oft schneller und sicherer, da diese Repositorys in Zukunft die neuesten Fehlerbehebungen und Sicherheitsupdates bereitstellen.

CakePHP Datum und Uhrzeit CakePHP Datum und Uhrzeit Sep 10, 2024 pm 05:27 PM

Um in cakephp4 mit Datum und Uhrzeit zu arbeiten, verwenden wir die verfügbare FrozenTime-Klasse.

CakePHP-Datei hochladen CakePHP-Datei hochladen Sep 10, 2024 pm 05:27 PM

Um am Datei-Upload zu arbeiten, verwenden wir den Formular-Helfer. Hier ist ein Beispiel für den Datei-Upload.

CakePHP-Routing CakePHP-Routing Sep 10, 2024 pm 05:25 PM

In diesem Kapitel lernen wir die folgenden Themen im Zusammenhang mit dem Routing kennen.

Besprechen Sie CakePHP Besprechen Sie CakePHP Sep 10, 2024 pm 05:28 PM

CakePHP ist ein Open-Source-Framework für PHP. Es soll die Entwicklung, Bereitstellung und Wartung von Anwendungen erheblich vereinfachen. CakePHP basiert auf einer MVC-ähnlichen Architektur, die sowohl leistungsstark als auch leicht zu verstehen ist. Modelle, Ansichten und Controller gu

CakePHP arbeitet mit Datenbank CakePHP arbeitet mit Datenbank Sep 10, 2024 pm 05:25 PM

Das Arbeiten mit der Datenbank in CakePHP ist sehr einfach. In diesem Kapitel werden wir die CRUD-Operationen (Erstellen, Lesen, Aktualisieren, Löschen) verstehen.

CakePHP erstellt Validatoren CakePHP erstellt Validatoren Sep 10, 2024 pm 05:26 PM

Der Validator kann durch Hinzufügen der folgenden zwei Zeilen im Controller erstellt werden.

See all articles