


Analyse des itérateurs et générateurs en PHP et introduction à leurs avantages et inconvénients
Ce que cet article vous apporte, c'est l'analyse et l'introduction des avantages et des inconvénients des itérateurs et des générateurs en PHP. J'espère qu'il aura une certaine valeur de référence. t'aider.
1. Itérateur
Analyse : Pensez-y, si vous mettez l'objet de collection et les opérations sur le Objet de collection Ensemble, lorsque nous voulons parcourir les éléments de l'objet de collection d'une autre manière, nous devons modifier l'objet de collection, ce qui viole le « principe de responsabilité unique », et le modèle d'itérateur sépare la structure des données et l'algorithme des données. structure, et les deux peuvent être développés indépendamment.
Avantages :
1. Prend en charge plusieurs méthodes de traversée. Par exemple, dans une liste ordonnée, nous fournissons deux itérateurs pour le parcours direct et le parcours inverse selon les besoins. Les utilisateurs n'ont besoin que de demander à notre itérateur d'effectuer des opérations de parcours sur la collection
2. Classes d'agrégation simplifiées. En raison de l'introduction des itérateurs, l'objet de collection d'origine n'a pas besoin de parcourir les éléments de collection par lui-même
3. Il est très pratique d'ajouter de nouvelles classes d'agrégation et classes d'itérateur, et les deux dimensions peuvent être modifiées indépendamment.
4. Fournir une interface unifiée pour différentes structures de collection, prenant ainsi en charge le même algorithme pour fonctionner sur différentes structures de collection
Inconvénients :
1. Itération Le modèle d'itérateur sépare les responsabilités de stockage des données et de parcours des données. Lors de l'ajout d'un nouvel objet de collection, vous devez ajouter une classe d'itérateur correspondante. Le nombre de classes augmente par paires, ce qui augmente la complexité du système dans une certaine mesure
.Interface spécifique :
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 ) }
2. Générateur
Le générateur PHP (générateur) est une fonction introduite dans PHP5.5.0 différente des itérateurs PHP standards, Les classes du générateur PHP ne sont pas nécessaires pour implémenter l'interface Iterator, réduisant ainsi la charge sur la classe. Le générateur calculera et affichera les valeurs à itérer en fonction des exigences, ce qui a un impact significatif sur les performances. Imaginez s'il s'agissait d'itérateurs PHP standard. effectuer souvent des opérations d'itération en mémoire Si l'opérateur doit calculer l'ensemble de données à l'avance, les performances seront faibles ; si une méthode spécifique est utilisée pour calculer une grande quantité de données, l'impact sur les performances sera encore plus important ; À ce stade, nous pouvons utiliser le générateur pour calculer et générer instantanément les valeurs suivantes sans occuper de précieuses ressources mémoire.
Avantages : prend moins de mémoire et a de bonnes performances. L'état interne du générateur est mis en pause chaque fois qu'il produit une valeur ; il est restauré lorsque le générateur demande la valeur suivante. Les composants internes du générateur continuent de basculer entre pause et reprise jusqu'à ce que la boucle soit terminée ou jusqu'à la position pause
Inconvénients :
1 Le générateur PHP ne peut pas satisfaire les besoins de tous les itérateurs, car s'il le fait. n'est pas interrogé, le générateur ne sait jamais quelle est la prochaine valeur sur laquelle itérer, il n'y a aucun moyen de reculer ou d'avancer dans le générateur.
2. Le générateur est toujours unique et le même générateur ne peut pas être itéré plusieurs fois. Cependant, le générateur peut être reconstruit ou cloné si nécessaire.
Créer un générateur :
1 Le générateur étant une fonction PHP, le générateur utilise le mot-clé rendement dans la fonction. Contrairement aux fonctions PHP ordinaires, les producteurs ne renvoient jamais de valeurs, ils produisent uniquement des valeurs.
<?php function myGenerator(){ yield 'a'; yield 'b'; yield 'c'; }
2. Lors de l'appel de la fonction générateur, PHP renverra un objet appartenant à la classe Generator. Cet objet peut être itéré à l'aide de la fonction foreach(). Pour chaque itération, PHP demandera à l'instance Generator de calculer et de fournir la prochaine valeur à itérer
<?php function makeRange($length){ for($i = 0; $i<$length; $i++){ yield $i; } } foreach(makeRange(1000000) as $i){ echo $i,PHP_EOL; }
Comme indiqué ci-dessus : Lorsque $length est grand (millions) et que vous n'utilisez pas de générateur à la fois en même temps Si tel est le cas, la mémoire doit être allouée à l'avance pour un tableau composé de un million à mille cinq entiers. Le générateur PHP peut réaliser la même opération, mais il n'allouera de la mémoire que pour un entier à la fois
Recommandations associées :
Code pour une interaction simple entre PHP et formulaire html
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Outils d'IA chauds

Undresser.AI Undress
Application basée sur l'IA pour créer des photos de nu réalistes

AI Clothes Remover
Outil d'IA en ligne pour supprimer les vêtements des photos.

Undress AI Tool
Images de déshabillage gratuites

Clothoff.io
Dissolvant de vêtements AI

AI Hentai Generator
Générez AI Hentai gratuitement.

Article chaud

Outils chauds

Bloc-notes++7.3.1
Éditeur de code facile à utiliser et gratuit

SublimeText3 version chinoise
Version chinoise, très simple à utiliser

Envoyer Studio 13.0.1
Puissant environnement de développement intégré PHP

Dreamweaver CS6
Outils de développement Web visuel

SublimeText3 version Mac
Logiciel d'édition de code au niveau de Dieu (SublimeText3)

Sujets chauds

Dans ce chapitre, nous comprendrons les variables d'environnement, la configuration générale, la configuration de la base de données et la configuration de la messagerie dans CakePHP.

PHP 8.4 apporte plusieurs nouvelles fonctionnalités, améliorations de sécurité et de performances avec une bonne quantité de dépréciations et de suppressions de fonctionnalités. Ce guide explique comment installer PHP 8.4 ou mettre à niveau vers PHP 8.4 sur Ubuntu, Debian ou leurs dérivés. Bien qu'il soit possible de compiler PHP à partir des sources, son installation à partir d'un référentiel APT comme expliqué ci-dessous est souvent plus rapide et plus sécurisée car ces référentiels fourniront les dernières corrections de bogues et mises à jour de sécurité à l'avenir.

Pour travailler avec la date et l'heure dans cakephp4, nous allons utiliser la classe FrozenTime disponible.

Pour travailler sur le téléchargement de fichiers, nous allons utiliser l'assistant de formulaire. Voici un exemple de téléchargement de fichiers.

Dans ce chapitre, nous allons apprendre les sujets suivants liés au routage ?

CakePHP est un framework open source pour PHP. Il vise à faciliter grandement le développement, le déploiement et la maintenance d'applications. CakePHP est basé sur une architecture de type MVC à la fois puissante et facile à appréhender. Modèles, vues et contrôleurs gu

Travailler avec la base de données dans CakePHP est très simple. Nous comprendrons les opérations CRUD (Créer, Lire, Mettre à jour, Supprimer) dans ce chapitre.

Le validateur peut être créé en ajoutant les deux lignes suivantes dans le contrôleur.
