Modèles de conception en PHP : exemples et application pratique

Formateur Python en ligne pour débutants

Apprenez Python facilement sans surcharge théorique. Résolvez des tâches pratiques avec vérification automatique et écrivez du code directement dans le navigateur.

Start Course

Qu'est-ce que les patrons de conception et pourquoi sont-ils nécessaires en PHP ?



Les patrons de conception (design patterns) sont des solutions éprouvées aux problèmes typiques rencontrés lors du développement de logiciels. Ils ne constituent pas un code prêt à l'emploi, mais représentent des modèles que l'on peut adapter à une situation spécifique. Pour un développeur PHP, la connaissance des patrons aide à écrire un code plus flexible, maintenable et évolutif.



Dans cet article, nous allons analyser quatre patrons de base du catalogue GoF (Gang of Four) qui sont le plus souvent utilisés dans des projets PHP réels. Chaque patron sera accompagné d'un exemple pratique et d'explications.



1. Singleton (Singleton)



Le patron Singleton garantit qu'il n'existe qu'une seule instance d'une classe et fournit un point d'accès global à celle-ci. Il est utile pour gérer les connexions à la base de données, les journaux (loggers) ou le cache.



Quand l'appliquer ?

  • Un seul objet est nécessaire (par exemple, une connexion à la base de données).
  • L'objet est utilisé dans toute l'application et la création de doublons est interdite.


Exemple d'implémentation :

<?phpclass DatabaseConnection{    private static ?self $instance = null;    private PDO $pdo;

private function __construct() { $this->pdo = new PDO('mysql:host=localhost;dbname=test', 'user', 'pass'); }

public static function getInstance(): self { if (self::$instance === null) { self::$instance = new self(); } return self::$instance; }

public function getConnection(): PDO { return $this->pdo; }

// Interdire le clonage et la désérialisation private function __clone() {} public function __wakeup() { throw new \\Exception("Cannot unserialize singleton"); }}

// Utilisation :$db = DatabaseConnection::getInstance();$pdo = $db->getConnection();?>


Important : Le Singleton est souvent critiqué pour violer le principe de responsabilité unique et compliquer les tests. Utilisez-le de manière réfléchie et uniquement là où cela est vraiment nécessaire.



2. Méthode de fabrique (Factory Method)



Le patron Factory Method définit une interface pour créer un objet, mais permet aux sous-classes de modifier le type d'objet créé. Cela permet de déléguer la logique de création d'objets aux classes filles.



Quand l'appliquer ?

  • On ne sait pas à l'avance quel objet exact devra être créé.
  • On souhaite masquer la logique complexe de création d'un objet au client.


Exemple d'implémentation :

<?php// Interface pour tous les types de notificationsinterface Notification{    public function send(string $message): void;}

// Implémentations concrètesclass EmailNotification implements Notification{ public function send(string $message): void { echo "Envoi d'email : {$message}"; }}

class SMSNotification implements Notification{ public function send(string $message): void { echo "Envoi de SMS : {$message}"; }}

// Créateur abstraitabstract class NotificationFactory{ abstract public function createNotification(): Notification;

public function notify(string $message): void { $notification = $this->createNotification(); $notification->send($message); }}

// Fabriques concrètesclass EmailFactory extends NotificationFactory{ public function createNotification(): Notification { return new EmailNotification(); }}

class SMSFactory extends NotificationFactory{ public function createNotification(): Notification { return new SMSNotification(); }}

// Utilisation :$factory = new EmailFactory();$factory->notify("Votre commande est confirmée !");

$factory = new SMSFactory();$factory->notify("Code de confirmation : 1234");

Blogs

Book Recommendations