Nouvelles fonctionnalités PHP 7 pour les développeurs WordPress • WPShout

By | avril 30, 2019

WordPress pas cher

PHP a beaucoup changé ces dernières années. Et même avant cela, cela avait beaucoup changé. En bref, le PHP moderne est un langage génial et cool, avec seulement quelques-uns des pires problèmes dont se souviendront les personnes qui l'utilisaient pour la dernière fois. (Moderne) PHP 7 et WordPress n’ont pas vraiment évolué de manière historique.

Mais bientôt nous pourrons utiliser tout cela dans WordPress. Dans WordPress 5.2, WordPress cessera de cibler le travail avec PHP inférieur à 5.6. WordPress prévoit d’ici la fin de l’année sur PHP 7.0. Ce n’est pas une nouveauté absolue, mais il témoigne d’un nouvel engagement à mettre le meilleur de PHP à la disposition de tous les développeurs WordPress. C’est donc notre objectif actuel: le code (moderne) PHP 7 WordPress et certaines des choses intéressantes que nous pouvons faire avec.

Mais le fossé entre le PHP que nous avons toujours eu (pour vous encourager à écrire) pour WordPress et le PHP moderne est énorme. Dans cet article, j’explorerai les principales fonctions du développement de WordPress dans un monde PHP 7 formidable. Certes, la plupart des techniques utilisées pour être un bon développeur PHP + WordPress sont toujours bonnes à connaître. Mais certains d’entre eux méritent certainement une mise à niveau cette année.

Ce que je veux dire par «PHP moderne» et en quoi il diffère de WordPress

Au moment où j'écris ceci, PHP 7.3 est la version «moderne». Et WordPress PHP pendant un certain temps a maintenu la compatibilité avec PHP 5.2. Bien que le nombre de versions comprises entre 5.2 et 7.3 puisse être inférieur à ce qu'un développeur WordPress aurait pu deviner (c’est-à-dire que ce n’était pas l’approximatif 20 qu’il ressemble), c’est beaucoup. Et beaucoup a changé. Nous allons donc nous limiter aux résumés stricts des fonctionnalités de base intéressantes et meilleures depuis PHP 5.2. S'il vous plaît, si j'ai oublié votre favori laissez-moi un commentaire. 🙂

Précision syntaxique: PHP a une syntaxe de tableau abrégée! Etc

Ce sera juste une séquence de petits changements dans votre syntaxe que le code WordPress PHP 7 autorisera. Si je me souviens bien, je vais donner un peu d’histoire et un peu de résumé. Mais comme je l’ai dit, la compatibilité de WordPress PHP 7 est une source de progrès, je vais donc aborder rapidement tous les sujets.

Syntaxe des tableaux courts PHP

Celui-ci est rapide: en PHP 5.4, nous avons obtenu un support complet pour une syntaxe de tableau plus courte. Être parti, déclarations de tableau à la recherche de fonction. Et bienvenue vos crochets. Alors tableau (1) est vraiment juste [1]. Qu'est-ce qui ne pas aimer? En d'autres termes, nous avons ceci disponible toujours et partout:

$ args = ['posts_per_page' => 7];

Plutôt cool.

Opérateur Null-Coalesce

Celui-ci un peu plus ringard et complexe. Parce que nous sommes pressés, nous supposerons que vous connaissez un peu les opérateurs ternaires. J'ai écrit un article à leur sujet si vous n'êtes pas familier.

Maintenant, qu'est-ce que cela fait? Ce qu’il fait, c’est que nous évitons une nécessité isset appel dans PHP hérité. Donc historiquement, PHP commettrait une erreur si vous supposiez qu'une valeur (le plus souvent dans un tableau) existait et qu’elle n’existait pas. Maintenant en utilisant le ?? opérateur, vous n’avez pas à vous inquiéter. Exemple de code:

$ x = ["yarr" => "meaningful_value"];
var_dump ($ x["aharr"] ?? $ x["waharr"] ?? $ x["yarr"]) // chaîne (16) "valeur_nucative"

Opérateur de vaisseau spatial

Celui-ci principalement que je mentionne parce qu'il a un nom amusant. Quel est l’opérateur de vaisseau spatial PHP? C'est ça: <=>. C’est vraiment une fonctionnalité abrégée qui n’est utile que dans un petit nombre de cas, mais pour des choses comme usort, vous deviez faire une expression plus longue souvent avec un opérateur ternaire. Maintenant, vous pouvez faire des choses plus simples. Exemple de code pertinent:

// Trier $ choses par propriété 'foo', croissant
usort ($ choses, fonction ($ a, $ b) 
    retourne $ a['foo'] <=>    $ b['foo'];
);

Nicoles à suivre (à partir de PHP 5.x)

WordPress lui-même, et le développement de WordPress en général, n’est pas très orienté objet. Il y a des objets autour, mais je dirais que plus de la moitié du code WordPress que je vois régulièrement n'est pas orienté objet. La plupart de ces fonctionnalités n’auront de sens que si vous connaissez un peu la programmation orientée objet. Si ce n’est pas le cas, nous avons un excellent cours gratuit pour vous aider à vous familiariser avec OOPHP.

Les espaces de noms PHP sont utiles!

C’est ce que j’ai longuement écrit ici à Thoughtful Code. Je vais donc garder celui-ci court et gentil. Les espaces de noms nous permettent de garder les choses comme ensemble grâce à une méthode autre que de les insérer dans un objet. Nous avons des «dossiers virtuels» appelés «espaces de noms», afin que je puisse avoir quelque chose comme RequireFeaturedImage Utility comme un endroit que je jette ensuite quelques classes ou fonctions différentes. C’est assez puissant.

Si vous voulez mieux comprendre les espaces de noms PHP, j'ai déjà écrit ceci:

Un guide complet sur les espaces de noms PHP

Le compositeur vient des espaces de noms PHP! Et peut changer ta vie!

C'est donc un trou de lapin beaucoup trop profond pour l'expliquer en profondeur pour le moment. Mais Composer (qui a vraiment besoin des espaces de noms PHP pour bien fonctionner) est le gestionnaire de dépendances dont PHP a besoin depuis environ 10 ans et environ 5 ans. Compositeur et WordPress n’ont pas été de grands amis, en partie parce que WordPress s’est concentré sur sur la compatibilité PHP 5.2, ce que Composer ne pourrait jamais faire.

Si vous ne comprenez toujours pas cela, certaines analogies peuvent vous aider. Le compositeur est comme npm dans l’écosystème JavaScript, Ruby’s gemmes, ou sur l’App Store de votre téléphone ou de votre ordinateur. Et c’est totalement gratuit! C’est certainement quelque chose que vous devez au moins comprendre vaguement comme développeur PHP moderne pour WordPress.

Les traits PHP sont géniaux! (Parfois)

Les traits sont essentiellement de petites fonctionnalités que vous pouvez «mixer» à une classe. J’ai choisi de me concentrer sur celles-ci plutôt que sur d’autres fonctionnalités PHP communes à la PHP depuis la version 5.2 (comme les interfaces, etc.) que les développeurs WordPress n’ont pas utilisées car elles sont plutôt novatrices.

J'ai des sentiments mitigés sur les traits, qui sont un moyen utile de modulariser le code, mais également un bon moyen de semer la confusion chez le prochain développeur qui a raté votre petit utilisation déclaration à l'intérieur d'une définition de classe. Dans l’ensemble, c’est un outil très utile à comprendre.

Un exemple de code ne le rend pas vraiment justice. Mais voici le plus bref qui puisse avoir un sens:

trait SayHelloWorld 
    fonction publique sayHello () 
        echo 'Bonjour tout le monde!';
    


La classe MyHelloWorld étend la base 
    utilisez SayHelloWorld;

$ hello = new MyHelloWorld;
$ hello-> sayHello () // 'Hello World!'

Le noyau à remarquer à propos de l'exemple de code MyHelloWorld jamais eu la méthode dis bonjour dans sa déclaration. Il l’a obtenue en utilisant le SayHelloWorld trait.

Obtenir les noms complets avec :: class facilement

En PHP 5.5, il est devenu possible d'utiliser NomClasse :: classe pour obtenir un nom complet de classe ClassName. C'est, NomClasse :: classe, va me donner ' App Utilities Classname' qui peut être invoqué ailleurs dans mon code, ou chargé d'une autre manière. Ceci est surtout utile et nécessaire à cause des espaces de noms. C'est un petit truc simple, mais je l'utilise tout le temps, donc je devais juste le mentionner.

Les fonctions anonymes sont idéales pour les crochets Quick WordPress

Celui-ci n’est pas très utile, mais cela fait des années que j’explique les connexions WordPress avec des noms de fonctions. Mais depuis près de 10 ans, vous utilisez des fonctions anonymes en PHP et WordPress. Mais avec la prise en charge de la version 5.2 (qui ne l’a pas prise en charge), finalement, vous pourrez le faire à certains endroits pour un accrochage rapide et pratique. (Il y a encore beaucoup de raisons de ne pas le faire, mais c’est une toute autre discussion):

add_action ('init', function () 
    echo 'WPShout était ici avec une fonction anonyme.';
);

Les types! Tellement de types (fonctionnalités de développement WordPress à partir de PHP 7)

Tout au long de PHP 5, vous aviez supporté une déclaration de type très basique. Ce que je veux dire, c’est que vous voyez de telles choses de temps en temps:

function my_adder (MyNumberClass $ en premier, MyNumberClass $ en second) 
    return $ first-> add ($ second);

Ceci est un exemple stupide, mais vous voyez l'idée. Ces déclarations à l'intérieur du paramètre de ma fonction de classes avec lesquelles ma fonction travaille indiqueraient aux autres développeurs ce qu'ils doivent transmettre pour que cela fonctionne. Mais tout au long de PHP 5.x, vous étiez limité à quelques types: classes, tableaux et callables (fonctions, y compris anonymes, et certaines classes).

Comme je l'ai dit, la déclaration de types aide les utilisateurs à comprendre comment vous attendez de votre code qu'il interagisse avec eux. Mais vous pouvez prendre les choses que vous êtes en mesure de déclarer des types pour beaucoup plus loin. Par exemple, vous pouvez dire aux gens ce que vous retournez et vous pouvez spécifier plus que des classes que vous accepterez. Cela nous amène à nos deux premières fonctionnalités WordPress PHP 7 à comprendre.

Retourne les déclarations de type

En PHP 7 et supérieur, vous verrez parfois une signature de fonction assez étrange:

fonction foo ($ time_string): DateTime 
    renvoyer new DateTime ($ time_string);

Alors, c’est quoi tout ça? : DateTime des trucs? Il vous dit que la fonction foo vous passera une instance de la DateTime classe. (Le DateTime objet est cuit dans PHP, et est utilisé pour représenter, eh bien, DateTimes.) Cela me permet de dire les choses qui vont appeler ma fonction (ou méthode de classe, etc.) à quoi ils devraient s’attendre.

Les types de retour sont également nuls (vous pouvez parfois attendre un null à la place du type spécifié), ce que vous pouvez attendre de la façon dont il est déclaré: foo ():? DateTime est une fonction qui retournera nul ou un DateTime objet.

Des astuces de types scalaires sont maintenant disponibles

En mettant à jour notre fonction étrange depuis la dernière fois, nous pouvons maintenant aussi faire des astuces de type “scalaire” en PHP. Donc nous aurions:

fonction foo (string $ time_string): DateTime 
    renvoyer new DateTime ($ time_string);

Comme je l’ai mentionné plus haut, en PHP 5, vous ne pouvez rien spécifier, Des classes, tableau et appelable comme types de paramètres. En PHP 7, nous pouvons également spécifier des types scalaires, tels que entier, chaîne, etc. (Pour une meilleure compréhension des types scalaires en PHP, lisez cet article.)

Sidenote: Vous pouvez EXIGER L'utilisation des types

Dans l’une de mes bizarreries légitimes préférées à propos de PHP, vous pouvez déclarer que vous voulez exiger que toutes les fonctions déclarent les types de leurs paramètres et leurs retours. Mais vous le faites en utilisant une sorte de «jonglage de type». Pour utiliser la fonctionnalité, vous allez ajouter en haut d’une .php fichier (à l'intérieur de <? php balises), les éléments suivants:

declare (strict_types = 1);

Je pense que c’est une bonne pratique, si vous essayez d’utiliser du code PHP fortement typé. Mais je pense aussi que c’est une drôle de réalité que d’utiliser un entier pour définir un booléen. 🙃

Oh ouais! Classes anonymes en PHP

Comme dans la série PHP 5, qui était principalement axée sur la POO, je dois ajouter une petite chose utile au hasard. En particulier, en PHP 7, vous pouvez créer une classe anonyme. Comme vous vous en doutez sûrement, cela ressemble beaucoup aux fonctions anonymes qui étaient mon bonus là-bas. Alors vous pouvez maintenant faire:

$ util-> setLogger (nouvelle classe 
    journal de fonction public ($ msg)
    
        echo $ msg;
    
);

Les classes anonymes ont la plupart des mêmes avantages (super rapide) et les mêmes inconvénients (il peut être difficile de trouver et de comprendre comme non-leur-auteur) des fonctions anonymes. Alors n’excédez pas avec ces nouveaux pouvoirs.

PHP 7 WordPress Code sera mieux

En 2020, nous pourrons écrire du code WordPress PHP 7 partout. Ce sera glorieux. Ou plus exactement, ce sera un peu mieux que ce que nous avons pu faire ces dernières années. Il y aura toujours beaucoup de WordPress – la réalité que nous regardons aussi face à face. Mais j'espère que j'ai partagé une partie de mon enthousiasme pour ces fonctionnalités exceptionnelles qui arrivent enfin dans WordPress et que vous êtes également enthousiasmé. L'avenir de PHP est génial! Et je suis tellement heureux que ce soit enfin arrivé pour WordPress. 😊