Principes de base du flux de contrôle • WPShout

By | avril 17, 2019

trouver un expert WordPress

Bienvenue à cette introduction au flux de contrôle PHP! Cet article continue notre série en expliquant les bases de PHP pour le développement WordPress.

Notre discussion sur les flux de contrôle en PHP repose sur une compréhension de base de quelques sujets que nous avons abordés dans des articles précédents:

  1. Fonctions PHP, qui sont l’une des principales formes de contrôle du flux d’exécution du code PHP.
  2. PHP revenir déclaration, qui est un élément important du flux de contrôle dans les fonctions PHP.

Maintenant: Qu'est-ce que le flux de contrôle en PHP et pourquoi mérite-t-il d'être discuté?

Qu'est-ce que le flux de contrôle PHP?

Le flux de contrôle est ce qui vous permet d’écrire du code qui n’exécute pas toujours.

Le «flux de contrôle PHP» semble si impressionnant et technique qu'il est facile de rater à quel point le concept est intuitif.

En termes simples, le flux de contrôle est ce qui vous permet d’écrire du code n'est pas Toujours courir. Nous ne voulons pas toujours que notre code PHP s’exécute directement, de haut en bas, dans l’ordre exact sur la page, et le flux de contrôle est ce qui nous offre une alternative à cela.

Si vous avez déjà écrit (ou voulu écrire!) Du code censé être exécuté seulement quand quelqu'un publie un nouveau post WordPress, ou seulement si Si l'utilisateur actuel est connecté en tant qu'administrateur, vous saurez à quel point le flux de contrôle est fondamental pour PHP, WordPress et même pour tout système logiciel.

Le flux de contrôle est le ronronnement constant de la logique "do-this-then-that" dans la programmation.

Le flux de contrôle est simplement ce bourdonnement constant de la logique "do-this-then-that" dans la programmation: «Faites la chose A, faites la chose B, puis faites la chose C encore et encore plusieurs fois, déterminez-la ensuite, faites peut-être la chose E, mais seulement si la déclaration F est vraie.»

Donc, ce flux de contrôle. Qu'est-ce que le «flux de contrôle PHP?» Rien de spécial: il fait simplement référence aux méthodes particulières utilisées par PHP pour gérer et mettre en œuvre le flux de contrôle lui-même.

Aussi simple soit-il, le flux de contrôle est également extrêmement important: si important, en fait, que sa présence ou son absence aboutisse à deux catégories de langages techniques complètement distinctes. Donc, si vous voulez savoir ce qui fait de PHP un la programmation la langue (et HTML probablement pas un), alors cet article est pour vous. Laissez-nous plonger!

Flux de contrôle: un exemple simple

Avant d’aller plus loin, examinons un exemple très basique de flux de contrôle PHP au travail:

<? php

echo 'Bonjour.'; // Imprimera "Bonjour".

// dit "si 1 est exactement égal à 2, alors lancez le code à l'intérieur"
si (1 === 2) 
// Aucun de ce code ne fonctionnera! C'est à l'intérieur d'une fausse déclaration if.
echo 'Bonne journée.'; // Ce code ne fonctionnera pas.
echo 'Salutations.'; // Ne courra pas.
$ année = date ('Y'); // Ne courra pas.
echo $ année; // Ne courra pas.


echo 'Salut encore.' // Imprimera "Salut encore."

Le flux de contrôle provoque l’exécution du code «seulement parfois», en fonction des circonstances particulières que vous spécifiez.

À partir de cet exemple rapide, nous pouvons voir l’essence du flux de contrôle: il provoque l’exécution du code «seulement de temps en temps», en fonction des circonstances particulières spécifiées par vous, le programmeur. Dans le cas du code ci-dessus, ce «parfois» est en réalité «jamais», car notre si-atatement est configuré pour ne s'exécuter que lorsque 1 est égal à 2.

Si une partie du code ci-dessus est source de confusion, ne vous attardez pas trop dans les détails – il y a beaucoup plus d'exemples (contenant beaucoup plus de code utile!) Plus tard.

Flux de contrôle et types de langue

Comme je le disais, certains langages techniques ont un flux de contrôle et d’autres pas, ce qui fait une énorme différence de type de langage.

Spécifiquement, le fait qu'un flux technique de contrôle ait ou non un langage technique donné détermine s'il s'agit:

  • Langage déclaratif, comme HTML ou CSS, ou un
  • Langage impératif, comme PHP ou JavaScript.

Dans un langage déclaratif, tout ce que vous écrivez "apparaît à chaque fois". Par exemple, le HTML que vous écrivez dans un .html Le fichier est ce que le navigateur lira et interprétera: le tout, de haut en bas, pas de deux manières.

Dans un langage impératif, vous décidez quelles parties de votre code seront exécutées et à quel moment.

Dans un langage impératif, en revanche, vous décidez quelles parties de votre code seront exécutées et dans quelles circonstances.

Par exemple, vous pouvez écrire un script PHP d'un million de lignes qui calcule l'âge de l'univers. Et puis vous pouvez envelopper tout le script dans si (1 === 2) et aucun de ces millions de lignes de calcul ne sera jamais exécuté, comme dans l'exemple ci-dessus.

Donc, nous pouvons certainement «écrire du code» sans flux de contrôle: par exemple, écrire le HTML et le CSS pour décrire à quoi un site web statique devrait ressembler. Mais quand on parle d’écriture dans un langage de programmation, on entend souvent écrire dans un langage impératif langage, parce que le flux de contrôle – la capacité de "faire différentes choses dans différentes circonstances" – est au cœur de la plus grande partie de la programmation.

Flux de contrôle PHP: Structures de base et exemples

Dans cette section, nous identifions et expliquons les principales structures de flux de contrôle en PHP, avec des exemples de code simples.

Non couvert (moins utile) Structures de contrôle PHP

Dès le départ, nous vous ferons une faveur en ne pas couvrant certaines structures de flux de contrôle PHP que, honnêtement, je n’ai jamais eu besoin de travailler en tant que développeur WordPress:

  • commutateur: Cela semble être utile, mais il est aussi volumineux et étrange – et peut-être plus utile dans un code volumineux et étrange. Essayez d'abord de refactoriser.
  • pour()-loops: syntaxe déroutant. tandis que() semble plus simple et peut faire les mêmes choses.
  • déclarer(): Je n'en ai jamais entendu parler avant aujourd'hui, et je pense savoir pourquoi. Cela semble être un excellent moyen d'écrire un code imprévisible.

Avec ces éléments étranges, voici quelques exemples simples de flux de contrôle en PHP:

si()-Déclarations

<? php

$ greeting = 'Hi';

// dit "si $ greeting est exactement égal à la chaîne 'Hi', alors lancez le code à l'intérieur"
if ($ greeting === 'Salut') 
echo $ salutation. '!'; // Imprimera "Bonjour!"


// dit "si $ greeting est exactement égal à la chaîne 'Hello', alors lancez le code à l'intérieur"
if ($ greeting === 'Bonjour') 
echo $ salutation. ','; // Ce code ne fonctionnera pas


$ greeting = 'Bonjour'; // $ salutation est maintenant "Bonjour"

if ($ greeting === 'Salut') 
echo $ salutation. '!'; // Ce code ne fonctionnera pas


if ($ greeting === 'Bonjour') 
echo $ salutation. ','; // affichera "Bonjour"

si()-Déclarations y compris elseif ()

Il est également possible d’écrire la même logique ci-dessus plus clairement et plus efficacement, en utilisant sinon.

sinon est un opérateur qui vient après une première si-déclaration. Le code à l'intérieur d'un sinon ne fonctionnera que si les deux choses sont vraies:

  1. La première si()-tatement, et tout ce qui suit elseif ()s qui sont au-dessus du courant, sont tous faux.
  2. le elseif ()«Sa propre condition est vraie.
<? php

$ greeting = 'Hi';

// dit "si $ greeting est exactement égal à 'Salut', alors lancez le code à l'intérieur"
if ($ greeting === 'Salut') 
echo $ salutation. '!'; // Imprimera "Bonjour!"

// dit "Si la déclaration if () ci-dessus était fausse,
// * et * $ greeting est exactement égal à 'Hello', puis lance le code à l'intérieur "
elseif ($ greeting === 'Bonjour') 
echo $ salutation. ','; // Ce code ne fonctionnera pas


$ greeting = 'Bonjour'; // $ salutation est maintenant "Bonjour"

// Ci-dessous, le même bloc if-elseif
if ($ greeting === 'Salut') 
echo $ salutation. '!'; // Ce code ne fonctionnera pas
 elseif ($ greeting === 'Bonjour') 
echo $ salutation. ','; // affichera "Bonjour"

Ce code se comporte exactement comme dans l'exemple ci-dessus, mais il enregistre certaines lignes. Il capture également plus clairement la vérité que $ voeux ne peuvent pas être à la fois «bonjour» et «bonjour». L’option «bonjour» est donc la solution la plus claire pour être considérée elseif (), pas comme le sien si()déclaration sur quelque chose de totalement séparé.

tandis que()-Boucles

UNE boucle est une structure qui peut faire quelque chose plus d'une fois. Les principales boucles utiles en PHP pour WordPress sont tandis que() et pour chaque() boucles.

Voici un tandis que()-loop en action:

$ i = 0; // $ i commence à 0
// Cette while () - boucle continuera à s'exécuter tant que $ i est inférieur à 3
<? php while ($ i <3;):
echo 'Bonjour et $ i est'. $ i. '| ';
$ i ++; // Cela signifie "augmenter $ i de 1"

Cette boucle sera exécutée trois fois au total, en imprimant ce qui suit: Bonjour et $ i vaut 0 | Bonjour et $ i vaut 1 | Bonjour et $ i vaut 2 |

Que se passe-t-il à la quatrième boucle? À ce moment, $ i est en fait égal à 3, ce qui n’est pas inférieur à 3. Le tandis que()La condition de -loop n’est plus vraie, la boucle s’arrête.

Note latérale sur la syntaxe alternative de PHP

À propos, notez que l'exemple ci-dessus utilise syntaxe alternative: au lieu de tandis que () , ça dit while (): fin. La vérité est que ces deux choses signifient exactement la même chose en PHP: ce sont des syntaxe («Façon d’exprimer») pour la même logique sous-jacente.

Pratiquement tous les exemples de cet article peuvent être écrits de deux manières:

tandis que () ou while (): à la fin;

si () ou if (): endif;

pour chaque () ou foreach (): fin pour chaque;

Etc. Ces structures se comportent de manière identique. Le style d'écriture que vous choisissez est donc une question de préférence et les normes de codage que vous suivez. Le plus important est qu’il est bon d’être cohérent dans l’utilisation de la syntaxe choisie.

Apprendre à éviter les boucles infinies

Si vous souhaitez interrompre PHP et rendre votre site Web ou celui de votre client inutilisable, exécutez une boucle infinie:

$ i = 0; // $ i commence à 0
// Cette while () - boucle continuera à s'exécuter tant que $ i est inférieur à 3
<? php while ($ i <3;):
echo 'oh non';

Cette boucle fonctionnera pour toujours, imprimant oh non oh non oh non oh non oh non oh non oh non oh non oh non oh non oh non non jusqu'à ce que votre serveur décide enfin qu'il en a assez et qu'il arrive à expiration.

Qu'est-ce qui a changé par rapport à l'exemple précédent? Nous n'avons plus le $ i ++; ligne qui pousse $ i par 1 chaque fois que la boucle s'exécute. $ i reste bloqué à 0, ce qui est toujours inférieur à trois, de sorte que la boucle ne s'arrête jamais. Vos boucles ont toujours besoin d'une raison pour arrêter.

pour chaque()-Boucles

Un PHP pour chaque() loop est une opération qui ne fonctionne qu'avec un type de données spécifique: les tableaux. Quoi pour chaque() est “la même chose, une fois, pour chaque élément du tableau qui lui est donné.” Voyons un exemple:

L'exemple ci-dessus imprimera ce qui suit: J'ai besoin de lait! J'ai besoin d'œufs! J'ai besoin de chocolat!

Il y a des utilisations plus compliquées de pour chaque() ce travail avec associatif tableaux (tableaux avec des structures plus complexes), mais nous allons les laisser pour plus tard.

Fonctions PHP

Comme nous en avons discuté dans notre article sur les fonctions PHP, l’intérêt d’une fonction est qu’elle ne s'exécute pas immédiatement. Nous n’avions pas mentionné cela à l’époque, mais c’est en fait une déclaration sur le flux de contrôle.

Jetons un autre regard sur notre exemple de fonction le plus fondamental tiré de cet article:

Les fonctions constituent le meilleur moyen d'appeler uniquement des bits de logique lorsque cela est nécessaire, et sont aussi fondamentales pour le flux de contrôle PHP que n'importe laquelle des autres constructions de langage répertoriées ici.

revenir et flux de contrôle

Comme nous l’avons couvert dans notre article complet sur PHP revenir déclaration, revenir arrêtera l'exécution d'une fonction et rendra tout ce qui lui sera demandé. C'est un élément important du flux de contrôle.

<? php

fonction multiplier ($ num1, $ num2) 
return $ num1 * $ num2;

echo 'bananes'; // Ne courra pas! Fonction déjà retournée


écho multiplier (4, 5); // imprimera "20"

Donc, dans une fonction, revenir est un «arrêt difficile» et, généralement, une «main en retour de votre travail».

sortie et mourir

Ces deux instructions sont une syntaxe alternative, elles font la même chose. Ce qu’ils font, c’est d’arrêter toute exécution de script PHP dans ses traces.

Cela semble être une tâche difficile à faire, mais cela peut être très important, par exemple pour écrire des fonctions Ajax. Avec var_dump (), mourir() est également très utile pour le débogage.

Vous pouvez réellement passer un argument dans mourir() pour imprimer quelque chose sur la page dans le processus, mais laissez les détails pour le moment.

Maintenant, vous connaissez le flux!

Ensemble, le nombre relativement restreint d’outils décrits ci-dessus nous permet de dire à PHP: «Que faire, quand.». Ce pouvoir est la principale différence entre un langage impératif comme PHP (qui est sans aucun doute un un langage déclaratif comme HTML (ce que peu de gens diront parfois, n'est pas vraiment un «langage de programmation», bien que ce soit une question de sémantique).

Si les exemples simples ci-dessus ont du sens, alors vous êtes sur la bonne voie pour pouvoir naviguer dans le vrai code PHP que vous rencontrerez en tant que développeur WordPress actif.

Merci d'avoir lu! Nous aimerions entendre vos questions ou vos commentaires, que ce soit dans les commentaires ci-dessous ou dans notre groupe Facebook.