Liskov Substitution Principle
PHP 🔴 SeniorDéfinition
Toute instance d'une classe parente doit pouvoir être remplacée par une instance de classe enfant sans casser le programme. Les sous-types doivent respecter le contrat du parent.
Analogie
Comme un remplaçant au football : il doit pouvoir jouer au même poste sans changer les règles du jeu.
Exemple de code
class Rectangle {
public function setWidth(int $w): void { $this->w = $w; }
public function setHeight(int $h): void { $this->h = $h; }
public function area(): int { return $this->w * $this->h; }
}
// Square qui override setWidth/setHeight viole LSP
// car le comportement change de facon inattendue
Cas d'usage
Lors de la conception de hiérarchies d'héritage pour éviter les bugs subtils lies aux sous-classes.
Anti-pattern
Un sous-type qui lance une exception dans une méthode héritée ou change le comportement attendu.