Polymorphisme
PHP 🟡 MidDefinition
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.