Maison  >  Article  >  développement back-end  >  Que signifie le rendement php ?

Que signifie le rendement php ?

coldplay.xixi
coldplay.xixioriginal
2020-07-02 09:23:144874parcourir

php rendement signifie que le mot clé rendement renvoie les données de la fonction génératrice. L'instruction rendement ressemble beaucoup à l'instruction return Yield n'arrête pas l'exécution de la fonction et renvoie, mais fournit un code générateur de boucle. valeur et met en pause l’exécution de la fonction du générateur.

Que signifie le rendement php ?

le rendement php signifie :

1.

Le mot-clé rendement renvoie les données de la fonction génératrice :

Le cœur de la fonction génératrice est le mot-clé rendement. Dans sa forme la plus simple, une instruction Yield ressemble beaucoup à une instruction Return Plutôt que d'arrêter l'exécution d'une fonction et de la renvoyer, Yield fournit une valeur au code du générateur de boucle et suspend l'exécution de la fonction du générateur.

2. Qu'est-ce qu'une fonction génératrice ?

Les fonctions génératrices sont en fait un moyen plus compact et efficace d'écrire des itérateurs. Il vous permet de définir une fonction (votre xrange) qui

calculera et renverra_ les valeurs au fur et à mesure que vous parcourez la fonction :

foreach (xrange(1, 10) as $key => $value) {
    echo "$key => $value", PHP_EOL;
}

Cela créera la sortie suivante :

0 => 1
1 => 2
…
9 => 10

Vous pouvez également contrôler $key dans foreach en utilisant

yield $someKey => $someValue;

dans la fonction générateur, $someKey est ce que vous souhaitez afficher $key et $someValue est la valeur dans $val . Dans l'exemple de la question, c'est $i.

3. En quoi est-ce différent du fonctionnement normal ?

Maintenant, vous vous demandez peut-être pourquoi nous n'avons pas simplement utilisé la fonction de plage native de PHP pour obtenir ce résultat. Oui tu es. Le résultat sera le même. La différence réside dans la manière dont nous y parvenons.

Lorsque nous utilisons rangePHP, il l'exécutera, créera un tableau complet de nombres en mémoire et renverra la boucle foreach qui pense que l'ensemble du tableau

le parcourra ensuite et affichera la valeur. En d’autres termes, foreachwill fonctionnera sur le tableau lui-même. La fonction range et foreach ne "parlent" qu'une seule fois. Pensez-y comme si vous receviez un colis par la poste. Le livreur vous remettra le colis et partira. Déballez ensuite l’ensemble du paquet et retirez tout ce qu’il contient.

Lorsque nous utilisons une fonction génératrice, PHP entrera dans la fonction et s'exécutera jusqu'à ce qu'il rencontre le mot-clé end ou rendement. Lorsqu'il rencontre un rendement, il renvoie la valeur actuelle à la boucle externe. Il revient ensuite à la fonction génératrice et continue là où il a été généré. Puisque votre xrange a une boucle for, il s'exécutera et rapportera jusqu'à ce que $max soit atteint. Considérez-le comme foreach et le générateur jouant au ping-pong.

4. Pourquoi ai-je besoin de ça ?

Évidemment, les générateurs peuvent être utilisés pour contourner les contraintes de mémoire. En fonction de votre environnement, faire range(1, 1000000) rendra votre script fatal, alors que faire de même avec les générateurs conviendra. Ou comme l'indique Wikipédia :

Étant donné que les générateurs ne calculent leurs valeurs de rendement qu'à la demande, ils sont utiles pour représenter des séquences coûteuses ou qui ne peuvent pas être calculées immédiatement. Il s'agit par exemple de séquences infinies et de flux de données en temps réel.

Le générateur doit également être rapide. Mais rappelez-vous que lorsque nous parlons de rapidité, nous parlons généralement en très petits termes. Donc, avant de commencer à exécuter et à modifier tout votre code pour utiliser un générateur, effectuez une analyse comparative pour voir où cela a du sens.

Un autre cas d'utilisation des générateurs est celui des coroutines asynchrones. Le mot clé rendement renvoie non seulement des valeurs, mais il les accepte également. Pour plus d’informations à ce sujet, consultez les deux excellents articles de blog liés ci-dessous.

5. A partir de quand peut-on utiliser le rendement ?

Les générateurs ont été introduits

dans PHP 5.5. Tenter d'utiliser une version de rendement antérieure à cela entraînera diverses erreurs d'analyse en fonction du code suivant le mot-clé. Donc, si vous obtenez des erreurs d'analyse de ce code, veuillez mettre à jour votre PHP.

Recommandations d'apprentissage associées : Programmation PHP de l'entrée à la maîtrise

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!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn