En programmation orientée objet, le polymorphisme fait référence à la capacité de différents objets à répondre différemment au même message. En PHP, le polymorphisme est principalement réalisé via les interfaces et l'héritage. Cet article analysera en détail le concept de polymorphisme en PHP à travers des exemples de code réels.
Tout d’abord, nous créons une interface Shape, qui contient une méthode calculateArea :
interface Shape {
public function calculateArea();
}
Ensuite, nous créons deux classes, Circle et Square, qui implémentent toutes deux l'interface Shape :
class Circle implements Shape {
private $radius;
public function __construct($radius) {
$this->radius = $radius;
}
public function calculateArea() {
return round(pi() * pow($this->radius, 2), 2);
}
}
class Square implements Shape {
private $sideLength;
public function __construct($sideLength) {
$this->sideLength = $sideLength;
}
public function calculateArea() {
return pow($this->sideLength, 2);
}
}
Ensuite, nous définissons une fonction getShapeArea, qui accepte un objet qui implémente l'interface Shape en tant que paramètre et appelle sa méthode calculateArea :
function getShapeArea(Shape $shape) {
return $shape->calculateArea();
}
Maintenant, nous pouvons créer des objets Circle et Square et calculer leurs aires à l'aide de la fonction getShapeArea :
$circle = new Circle(5);
$square = new Square(4);
echo "aire du cercle:" . getShapeArea($circle) . ";";
echo "superficie du carré:" . getShapeArea($square) . "。";
Dans cet exemple, les classes Circle et Square implémentent l'interface Shape et remplacent la méthode calculateArea. En passant différents objets à la fonction getShapeArea, nous obtenons le polymorphisme : la même fonction exécute une logique différente sur différents objets.
Le polymorphisme en PHP est implémenté via des interfaces et l'héritage, permettant à différents objets de répondre différemment au même message. Ce mécanisme améliore la flexibilité et l'évolutivité du code. Une utilisation raisonnable du polymorphisme peut simplifier la structure du code, améliorer la réutilisabilité du code et rendre les programmes orientés objet plus faciles à maintenir.