Liskov Substitution Principle

PHP 🔴 Senior

Definition

Toute instance d'une classe parente doit pouvoir etre remplacee par une instance de classe enfant sans casser le programme. Les sous-types doivent respecter le contrat du parent.

Analogie

Comme un remplacant au football : il doit pouvoir jouer au meme poste sans changer les regles 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 hierarchies d'heritage pour eviter les bugs subtils lies aux sous-classes.

Anti-pattern

Un sous-type qui lance une exception dans une methode heritee ou change le comportement attendu.
#core#interview#solid