(Access to the English version here )

Dans cet article je te propose de voir 10 tips qui peuvent améliorer ton code PHP 🔍 🐘

Pour faciliter la lecture je vais écrire des morceaux de code que j’ai rencontré et proposer 1 solution de remplacement avec des commentaires si besoin, comme tu le sais il y a 4242424242424 manières de faire la même chose ✨ et tu as clairement le droit de pas être d’accord avec ce que je propose 😅

👀 Pour mes exemples j’utilise la version 7.4 de PHP

3,2,1… c’est parti 🏁 🔥

1 - Dans ce genre de cas tu peux retourner l’expression 👌

2 - Null coalescing operator for the win 😍

💡C’est très pratique pour éviter les exceptions lorsque tu veux accéder à une clé d’un tableau qui pourrait ne pas exister

3 - 🛑 Evite d’utiliser method_exist si possible et privilégie des interfaces

Dans cet exemple l’avantage de l’interface est que nous évitons les erreurs de typographie et nous avons les avantages de l’IDE (recherche, autocomplete…).

De plus le contrôle "if method_exist($user, 'setUpdatedAt')est fortement lié au nom de la méthode, en passant par une interface on peut renommer la méthode de manière safe et puisque c’est une interface la méthode setUpdatedAt peut très bien être mise dans un trait pour être réutilisée sans duplication de logique.

4 - Rendre le code expressif 🗣

Dans l’exemple on pourrait même extraire le check de l’interface dans une methode isLoggable ça réduit la charge cognitive et permet de toute suite comprendre que l’objet manipulé est possiblement loggué.

5 - Droit au but 🥅

6 - Initialize ton helper, 1 fois mais pas 2 😛

7- Unpack an array 🎩 (déso j’ai pas de trad en FR) 😁

Dans le même esprit on peut aussi assigner des variables à partir d’un tableau, c’est pratique si une fonction retourne un tableau 🚀

8 - Evite d’utiliser empty ⚠️

Cette fonction est trop “générique”, l’utiliser peut masquer de potentiel bug, je te link un petit article sur le sujet

9 - Utiliser les index de tableau comme discriminant 📚

Dans certains cas il est très pratique d’utiliser les index d’un tableau comme discriminant afin de retrouver la valeur souhaitée. Imaginons qu’on ait une fonction qui permette de dire “bonjour” dans différentes langues, le 1er reflexe serait de faire 1 switch case basique comme ceci:

Le principale inconvénient est qu’au fur et à mesure que nous enrichirons les traductions, le switch case va grossir et surtout nous allons devoir modifier cette méthode, ce qui enfreint le “O” de SOLID 😬

Une bonne alternative est de “configurer” les traductions disponibles dans un array comme ceci:

Ainsi avec cette seconde approche les traductions supportées sont configurés dans 1 tableau, on peut aisément le faire évoluer sans toucher à notre fonction.

On peut aller plus loin et rendre plus robuste notre programme en évitant de la faire planter si nous avons une traduction que nous gérons pas en utilisant “les values object” (si ce terme ne te parle pas, je l’explique dans cette vidéo)

Voici la version avec 1 Value Object :

Cette solution demande un peu plus de code mais c’est plus robuste 💪et plus clean 🧼 , on peut réutiliser l’objet Locale et si on a une locale qui n’est pas gérée l’application plantera en amont donc plus rapidement que dans la méthode sayHello et c’est important de planter rapidement en cas d’erreur 💡

10 - isset unset var_dump peuvent accepter plusieurs arguments 😅

et unset($user, $product) ainsi que var_dump($data, 42, $user) sont des codes complètement valide.

Et voilà pour ces 10 tips, il y en a d’autres et je ferais sûrement d’autres articles dans ce sens, je t’invite à me follow pour ne pas manquer les prochains 🗞

👋 Retrouve moi donc sur Twitter LinkedIn et Youtube 🍿

Merci de m’avoir lu, partage l’article et pense à 👏 au max…

Fullstack Developer- certified Symfony 4,5 and certified AWS Solution Architect - Freelancer - Remote Worker