Dependency Inversion Principle

PHP 🟡 Mid

Définition

Les modules de haut niveau ne doivent pas dépendre de modules de bas niveau. Les deux doivent dépendre d'abstractions (interfaces). L'abstraction ne dépend pas des détails.

Analogie

Comme un chef qui commande 'du poisson frais' sans se soucier du fournisseur spécifique.

Exemple de code

// Haut niveau depend de l'abstraction
class OrderService {
  public function __construct(
    private PaymentGateway $gateway // interface
  ) {}
}
// Bas niveau implemente l'abstraction
class StripePayment implements PaymentGateway { }

Cas d'usage

Pour découvrir les couches de l'application et permettre le remplacement des implémentations (tests, refactoring).

Anti-pattern

new StripePayment() directement dans le service au lieu d'injecter via l'interface.
#core#interview#solid

← → au clavier pour passer d'une fiche à l'autre