Polymorphisme

PHP 🟡 Mid

Definition

Capacite d'objets de types differents a repondre au meme message (methode). Permet de traiter des objets differents de maniere uniforme via une interface commune.

Analogie

Comme la touche Play : que ce soit Spotify, YouTube ou un CD, le resultat est de la musique.

Exemple de code

interface Notifier {
  public function send(string $msg): void;
}
class EmailNotifier implements Notifier { /* ... */ }
class SmsNotifier implements Notifier { /* ... */ }

function notify(Notifier $n, string $msg): void {
  $n->send($msg); // fonctionne pour tout Notifier
}

Cas d'usage

Pour ecrire du code generique qui fonctionne avec n'importe quelle implementation d'une interface.

Anti-pattern

Utiliser instanceof et des if/else en cascade au lieu de laisser le polymorphisme agir.
#core#interview#oop