Comprendre les opérateurs PHP de logique, ou || et et ! beaucoup plus • WPShout

By | juillet 2, 2019

Formation WordPress

Il y a beaucoup d'opérateurs PHP différents. Certains sont des opérateurs de comparaison PHP et fonctionnent comme les maths. Nous les conserverons pour une autre fois, car notre seul objectif sera cette fois-ci les opérateurs logiques PHP. C'est la logique "et" et "ou" de la logique booléenne.

Il y a trois grands: “et” (&&), "ou" ||, et pas" !. Allons-y.

Pourquoi les opérateurs logiques PHP importent-ils et quels sont-ils?

À la surprise de nombreuses personnes qui ont peur de la programmation, beaucoup de ce que vous faites lorsque vous programmez est de créer et de résoudre des énigmes de logique simples. Au risque de trop simplifier, dans WordPress, nous stockons simplement des données spécifiques, puis construisons une petite machine simple (appelée «thèmes WordPress») pour afficher ces données à des personnes spécifiques de manière spécifique dans des conditions spécifiques. (C’est le rôle de la "hiérarchie des modèles" dans WordPress, si je ne vous étonne pas.)

Donc, beaucoup de code PHP WordPress finit par être simplement des règles du type "si les données que je montre sont récentes et que je montre un type de message" page ", ne pas afficher la date sur la page." Ces règles doivent être écrit d'une manière beaucoup plus exacte syntaxiquement que nous ne les parlons, mais le principe est le même. Et pour comprendre cette syntaxe, nous devons savoir comment dire «et» et «ou», alors allons-y.

Opérateurs && et AND PHP

En bref, vous dites PHP “et” avec un symbole double esperluette (&&). Ces deux bretzels remplissent le même rôle de et dans d'autres langages de programmation, vous serez peut-être habitué. En fait (en tant que personne qui écrit PHP depuis 15 ans, cela m’a surpris), vous pouvez écrire et en PHP. Il évalue bien et le langage l’énumère bien dans sa documentation sur les opérateurs logiques.

Pourquoi étais-je surpris que vous puissiez dire «et» avec les deux && opérateur et le mot clé et? Parce qu'aucun code PHP que j'ai lu n'a utilisé ce dernier, et, format. En fait, je peux compter sur une main les fois où j'ai lu PHP qui utilisait et (ou ou ou xor), et beaucoup d’entre eux l’ont été pendant la rédaction de cet article. Longue histoire courte: utilisation && quand tu veux dire et en code PHP.

PHP ou || Un opérateur logique alternatif

Une autre idée centrale de la logique booléenne avec PHP est «ou». Parfois, il existe deux conditions préalables, où être satisfait rend une chose acceptable pour nous. Comme je l’ai dit, dans WordPress, les thèmes peuvent être «s’il s’agit d’une entrée unique ou d’une page d’archive». Et comme avec et ci-dessus, vous pouvez réellement écrire du code PHP valide avec un simple: ou où vous voulez dire ça.

Mais, de la même manière, nous ne voyons presque jamais cela à l'état sauvage. Ce que nous voyons le plus souvent, c’est plutôt le «double tuyau» || opérateur. Encore une fois, je n’ai pas réalisé avant d’écrire cet article que ou était valide en PHP, vous devriez donc vous habituer à lire et à écrire ||.

(Encore plus rare, il existe un opérateur “exclusif ou” en PHP, écrit xor. C'est le plus rare des opérateurs logiques PHP. C’est un projet que je n’ai jamais vu en dehors des tutoriels. Cela signifie "si les choses qui m'entourent sont tous les deux vrai, et jamais d’autre chose. »À moins que vous ne cherchiez à impressionner les gens, j’évite généralement cela, car les gens n’ont pas l’habitude de le lire.)

Bang n'est pas à oublier

La dernière chose que vous devez savoir pour prétendre avoir un langage booléen robuste est la présence du «non». En PHP, vous n’écrirez cela qu’avec un «bang» ou un «point d’exclamation». !. Contrairement à && et ||, il n’existe pas de version rédigée linguistiquement.

Il est important de savoir que "non" (!) dans la syntaxe logique ne “désactive pas” mais “retourne”. Donc “pas vrai” signifie faux, et “pas faux” signifie vrai. C’est ce à quoi vous vous attendez probablement, mais juste au cas où je pensais clarifier.

Exemples d'utilisation d'opérateurs PHP:! just && et || dans des endroits étranges

C’est assez avec les mots compliqués, voyons du code. Nous allons utiliser une situation plus simple pour comprendre d’abord la logique conditionnelle PHP, mais nous superposerons ensuite certaines balises conditionnelles WordPress. Les balises conditionnelles WordPress sont généralement très faciles à lire. Si vous n’êtes pas familier, cela ne devrait pas être un gros obstacle.

Comprendre PHP pas

L'opérateur Bang (!) est assez facile, nous allons donc commencer par là. Je vais supposer qu’il existe une fonction PHP appelée do_thinget votre question dans tous nos scénarios est de ne pas vous inquiéter de do_thing rien – c’est une fausse fonction – mais dites-moi si elle sera appelée ou non. Alors commençons basique:

si vrai) 
    do_thing ();

Ici nous faisons do_thing courir, parce qu'un si vrai) court toujours. Ceci est la base de toutes les opérations logiques en PHP. PHP et la logique sont tous construits à partir de là. Continuons:

si vrai) 
    do_thing ();

Est-ce que do_thing courir ici? Non! Pourquoi? Parce que !vrai est la même chose que faux. Et code encerclé par si (faux) ne fonctionne pas.

Bon, alors que va-t-il se passer ici?

si (! faux) 
    do_thing ();

En effet, parce que «pas faux» finit par s’évaluer comme «vrai», do_thing s'exécutera dans cet extrait de code.

PHP de base et (&&) Utilisation

OK, tenons donc compte de la tendance à la vérité simple et fausse. Volonté do_thing se faire appeler ici?

if (true && false) 
    do_thing ();

do_thing ne fonctionnera pas dans le code ci-dessus. Un "et" booléen en PHP nécessitera que les deux côtés de celui-ci évaluent true pour que le segment "émette" un true. Donc, une fausse déclaration et une affirmation vraie ne sont pas toutes les deux vraies. Par conséquent, nous ne suivons pas do_thing.

Ici, nous allons commencer à remplir les «balises conditionnelles» de WordPress, car elles devraient nous aider à être un peu plus pratiques. Réfléchissons au code suivant, que vous pourriez voir dans un fichier de thème WordPress:

if (is_singular () &&! is_page ()) 
    la date();

Un peu de contexte: la date est une fonction WordPress qui (à l’intérieur de The Loop) affiche la date de publication du «post» actuel. Cela signifie tout «type de post» dans WordPress: pages, publications, formulaires, etc. De même, is_singular sera vrai lorsque nous sommes sur une page «publication unique», qui peut inclure tous les autres types de publication, y compris les pages. Et is_page nous dit que nous sommes sur une page (type de message) dans WordPress. Donc, étant donné tout cela, dans quelles conditions la date sera-t-elle affichée sur ce modèle?

Quand on regarde seulement un post, et qu'on est ne pas (c'est le !"Travail, rappelez-vous) sur un type de message de page.

Exemple PHP If ou Operator

Passons sur un PHP “ou” (ou ||) Exemple. Réutilisons simplement nos connaissances antérieures. Tout d’abord, changeons le && dans notre premier && exercice à la double-piped "ou":

if (true || false) 
    do_thing ();

Est-ce que do_thing se faire appeler? Cela fait. Pourquoi? Parce que l’une ou l’autre de ses deux parties évaluées à vrai. Et depuis la première déclaration était (littéralement) vrai, nous savons que cela va arriver.

Et ensuite, dans quelles circonstances la date de la poste sera-t-elle affichée ici:

if (is_singular () ||! is_page ()) 
    la date();

Cela s’affichera soit si nous ne regardons qu’une seule page, ou où nous examinons n'importe quel type de message WordPress mais une feuille. Cela signifierait que la date dans ce scénario a une visibilité très différente, bien supérieure, à celle du && Exemple.

Une combinaison et un casse-tête d'opérateurs logiques PHP

Bon, enfin un exemple trop complexe. Encore une fois, nous allons utiliser certaines balises conditionnelles pour WordPress:

if (is_author ('David') &&! is_search () || is_author ('Fred') && is_singular ()) 
    echo 'David est génial!';

Un bref résumé de ce qui pourrait être nouveau ici:

  • is_author nous dit si l'article est écrit par l'auteur dont le "pseudo" correspond à ce que nous passons.
  • is_search nous indique si nous voyons une page de résultats de recherche dans WordPress
  • écho est un moyen d'afficher quelques mots en PHP

Alors, que fait ce code? En bref, il ajoute quelques "graffitis" énervants proclamant la grandeur de David. Mais quand? Le fait que ce soit un peu compliqué à répondre nous amène à l’un des inconvénients de la complexité des déclarations booléennes assez courtes. Réécrivons un peu ce code pour faciliter la réflexion sur:

$ post_by_david_not_on_a_search_result = is_author ('David') &&! is_search ();
$ post_by_fred_shown_on_own_page = is_author ('Fred') && is_singular ();
if ($ post_by_david_not_on_a_search_result || $ post_by_fred_shown_on_own_page) 
    echo 'David est génial!';

Je ne veux pas passer trop de temps à développer un article sur les opérateurs conditionnels PHP en un article sur les styles de code. Mais c’est important, car nous, les humains, ne sommes pas tous des machines booléennes parfaites. Le code PHP devrait tenir compte de la façon dont les humains pensent. En décomposant cette logique et en utilisant certaines variables temporaires, je la comprends maintenant. C’est une compétence qu'il est important de comprendre. Vous pouvez écrire du code qui est bêtement simple. Je dirais que vous êtes un meilleur développeur si vous le faites.

Retour sur le sujet de PHP et Et ou: David est génial! sera ajouté aux messages de David ne figurant pas sur les pages de résultats de recherche, ou aux messages de Fred figurant sur singulier page.

Vous comprenez maintenant les opérateurs booléens et conditionnels PHP

J'espère que vous m'avez suivi tout au long. Les opérations booléennes sont l’une des bases les plus profondes de la connaissance du code PHP. Si vous pouvez fonctionner dans le monde moderne, vous pouvez comprendre ce genre de choses. Parfois, je vous assure que la syntaxe vous tracassera. Cela semblera rendre les choses simples impossibles.

Mais si vous persistez, vous le maîtriserez. La logique PHP ou, et, et ne pas sont à votre portée, rappelez-vous ce que signifient tous ces symboles. Récapitulation rapide! Ne pas être trop intelligent || grossier. Mais tu peux && y arrivera! Bonne chance