10 tips en PHP 🐘

Smaine Milianni
3 min readJul 26, 2021

(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


Sign up to discover human stories that deepen your understanding of the world.

Free

Distraction-free reading. No ads.

Organize your knowledge with lists and highlights.

Tell your story. Find your audience.

Membership

Read member-only stories

Support writers you read most

Earn money for your writing

Listen to audio narrations

Read offline with the Medium app

--

--

Smaine Milianni
Smaine Milianni

Written by Smaine Milianni

Engineering Manager- Technical Lead - certified Symfony 7,6,5,4 and certified AWS Solution Architect - Remote Worker

Responses (3)

Write a response