Introduction : pourquoi faire une code review en PHP ?
La code review (révision de code) est un processus au cours duquel un ou plusieurs développeurs vérifient le code écrit par un collègue avant qu'il ne soit intégré à la branche principale du projet. Pour les développeurs PHP débutants, cette pratique peut sembler intimidante, mais c'est en réalité un outil de croissance puissant. La code review aide non seulement à trouver des bugs, mais aussi à améliorer l'architecture, la sécurité et la lisibilité du code. Dans cet article, nous allons voir sur quoi se concentrer lors de la vérification du code PHP et comment donner un retour qui soit utile, sans être blessant.
1. Que vérifier dans le code PHP : catégories principales
Pour que la révision soit structurée, divisez la vérification en plusieurs domaines clés. Cela vous aidera à ne pas oublier de détails importants et à donner des recommandations claires à l'auteur.
1.1. Syntaxe et normes de codage (PSR)
La première chose qui saute aux yeux est le style du code. La communauté PHP a développé les normes PSR (PHP Standards Recommendations) qui facilitent la lecture et la maintenance du code. Vérifiez :
- La conformité à
PSR-12(indentation, espaces, accolades). - Le nommage des classes (CamelCase), des méthodes et des variables (camelCase).
- L'absence d'espaces superflus et de lignes vides.
Exemple de mauvais style :
class userController{function getUser($id){return $id;}}Exemple de bon style (PSR-12) :
class UserController{ public function getUser(int $id): ?User { return $id; }}1.2. Sécurité
PHP est un langage où il est facile de créer des vulnérabilités. Soyez particulièrement attentif à :
- Les injections SQL : utilisez des requêtes préparées (PDO ou mysqli), pas de concaténation de chaînes.
- XSS (cross-site scripting) : échappez la sortie avec
htmlspecialchars(). - La vérification des types : utilisez le typage strict (
declare(strict_types=1);).
Exemple de code non sécurisé :
$sql = "SELECT * FROM users WHERE id = " . $_GET['id'];$result = mysqli_query($conn, $sql);Version sécurisée :
$stmt = $pdo->prepare('SELECT * FROM users WHERE id = :id');$stmt->execute(['id' => (int)$_GET['id']]);1.3. Performance et logique
Vérifiez si le code n'effectue pas d'opérations inutiles. Par exemple :
- Évitez les requêtes dans une boucle — utilisez JOIN ou des sous-requêtes.
- N'utilisez pas
@pour supprimer les erreurs — cela masque les problèmes. - Vérifiez que les fonctions n'en font pas trop (principe de responsabilité unique).
Exemple de code lent :
foreach ($userIds as $id) { $user = User::find($id); // N requêtes}Version optimisée :
$users = User::whereIn('id', $userIds)->get(); // 1 requête2. Comment donner un retour : règles pour les débutants
Même si vous avez trouvé beaucoup d'erreurs, il est important de présenter l'information de manière à ce que l'auteur ne la prenne pas mal. Voici quelques principes.
2.1. Soyez précis et objectif
Au lieu de « ce code est mauvais », écrivez : « À la ligne 12, une concaténation SQL est utilisée, ce qui peut entraîner une injection. Je recommande de la remplacer par une requête préparée ». Expliquez pourquoi c'est un problème, ne vous contentez pas de le signaler.
2.2. Utilisez le « sandwich » du retour
Commencez par un commentaire positif, puis indiquez les défauts, et terminez par un conseil constructif. Par exemple :
« C'est excellent d'avoir utilisé le typage pour les arguments ! Cependant, la méthode getUser() retourne une chaîne, pas un objet User — cela pourrait casser le typage ailleurs. Je suggère de modifier le type de retour en User ou null. »
2.3. Proposez des alternatives, ne critiquez pas
Au lieu de « Enlevez ce bricolage »,