Liskov Substitution Principle
PHP 🔴 SeniorDefinition
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.