Maison  >  Article  >  développement back-end  >  Polymorphisme en PHP

Polymorphisme en PHP

PHPz
PHPzoriginal
2024-08-29 13:05:50443parcourir

Le polymorphisme est l'un des bons concepts des fonctionnalités du langage de programmation orienté objet PHP (fonctionnalités OOPS). Le mot polymorphisme est en fait dérivé des deux mots grecs « Poly » et « Morph ». La signification de poly est « plusieurs » et morph est « formes ». Cela signifie la capacité d’avoir plusieurs formes. En termes courants, le polymorphisme est un modèle de programmation orientée objet dans lequel la classe possède diverses fonctionnalités tout en ayant des interfaces communes. En fait, le polymorphisme est de deux types : au moment de la compilation et au moment de l'exécution. PHP ne prend pas en charge le polymorphisme au moment de la compilation, ce qui signifie une surcharge des fonctions et des opérateurs.

PUBLICITÉ Cours populaire dans cette catégorie DEVELOPPEUR PHP - Spécialisation | Série de 8 cours | 3 tests simulés

Commencez votre cours de développement de logiciels libres

Développement Web, langages de programmation, tests de logiciels et autres

Syntaxe :

Class a{
//methods
Public function b(){
//methods
}
}
Class b extends a{
//methods
Public function b(){
//methods which are in/not in the function of the class a.
}
}

Explication :

Dans la syntaxe ci-dessus, nous avons créé 2 classes, l'une est normale et l'autre sert à étendre la classe mais nous avons utilisé le même nom de fonction/méthode pour différentes fonctionnalités. C’est ce qu’on appelle le polymorphing. On peut utiliser de nombreux noms similaires de fonctions/méthodes avec des fonctionnalités différentes selon les besoins dans le codage.

Fonctions du polymorphisme en PHP

Le polymorphisme de PHP fonctionne sur la base du concept de polymorphisme d'exécution. En PHP, le polymorphisme fonctionne en prenant la décision au moment de l'exécution, ce qui n'est en fait pas un concept de polymorphisme au moment de la compilation, sinon nous pouvons dire que nous avons plusieurs/plusieurs implémentations qui sont un sous-type d'une super classe, le concept d'exécution (surcharge de fonctions) est un exemple de polymorphisme du langage de programmation PHP.

La surcharge de fonctions signifie dériver une classe à partir d'une fonction nouvellement créée avec la même signature (cela signifie que la fonction a le même nom, le même type et un certain nombre d'arguments) dans sa classe parent en tant que fonction appelée comme méthode de substitution . Dans ce concept de polymorphisme, on peut créer des fonctions par extension, mais la fonction de même nom/de dénomination similaire doit être impliquée afin de traiter le concept de polymorphisme et d'héritage. Afin d'améliorer la capacité de programmation en augmentant les fonctionnalités de la classe, il est indispensable de disposer du polymorphisme des interfaces communes.

Exemples pour implémenter le polymorphisme en PHP

Voici les exemples de polymorphisme en PHP :

Exemple n°1

Dans l'exemple ci-dessous, l'une des classes de base « Shap1 » est créée. Ici, nous allons hériter de la classe Shap1 dans les trois classes dérivées. Les noms des classes sont Circle1, Triangle1 et Elliipse1. Chaque classe possède la fonction draw afin de compléter le polymorphisme d'exécution du langage de programmation PHP. Dans le processus d'appel suivant, nous allons créer ici un tableau de longueur 2 et l'index de chaque tableau est utile pour créer un objet d'une classe. Après cela, nous allons utiliser une boucle qui va être exécutée en fonction de la longueur du tableau qui a une valeur « $i1 » qui passe à la variable du tableau objet « $Val1[$i1] ». Il sera donc exécuté 3 fois et sera appelé en utilisant la méthode draw() de chaque classe.

Code :

<?php
class Shap1
{
function draw1(){}
}
class Circle1 extends Shap1
{
function draw1()
{
print "Circle1 has been drawn.\n";
}
}
class Triangle1 extends Shap1
{
function draw1()
{
print "Triangle1 has been drawn.\n";
}
}
class Ellipse1 extends Shap1
{
function draw1()
{
print "Ellipse1 has been drawn.";
}
}
$Val1=array(2);
$Val1[0]=new Circle1();
$Val1[1]=new Triangle1();
$Val1[2]=new Ellipse1();
for($i1=0;$i1<3;$i1++)
{
$Val1[$i1]->draw1();
}
?>

Sortie :

Polymorphisme en PHP

Exemple n°2

Voici l'exemple de mise en œuvre du concept Polymorphisme avec l'aide de l'interface. L'interface/les interfaces sont/sont très similaires à n'importe quelle classe, sauf qu'elles ne contiennent aucun code. L'interface aide à définir les noms des méthodes ainsi que les arguments des méthodes, mais ici le contenu des méthodes ne sera pas défini. L'interface qui s'exécute par n'importe quelle classe/classes doit être exécutée par toutes les méthodes caractérisées par l'interface.

Ici, Machine1 aura toutes les classes pour définir calcTask1. Circle1 implémente la méthode CallTask1(). Rectangle1 essaie également d'implémenter une interface Machine mais définit avec un corps différent de la méthode calcTask1(). Le polymorphisme dit que toutes les méthodes qui calculent la tâche doivent avoir un nom équivalent. Nous allons appeler les différents noms de calcTask1() sans fournir les détails. Ici, le nom de la méthode qui calcule la tâche est important.

Code :

<?php
interface Machine1 {
public function calcTask1();
}
class Circle1 implements Machine1 {
private $radius1;
public function __construct($radius1){
$this -> radius1 = $radius1;
}
public function calcTask1(){
return $this -> radius1 * $this -> radius1 * pi();
}
}
class Rectangle1 implements Machine1 {
private $width1;
private $height1;
public function __construct($width1, $height1){
$this -> width1 = $width1;
$this -> height1 = $height1;
}
public function calcTask1(){
return $this -> width1 * $this -> height1;
}
}
$mycirc1 = new Circle1(3);
$myrect1 = new Rectangle1(3,4);
echo $mycirc1->calcTask1();
echo $myrect1->calcTask1();
?>

Sortie :

Polymorphisme en PHP

Example #3

In the below example a class “base11” is created with a function add1() with $a1 and $b1 variables. Then “$res1” variable is created which is used to store the multiplication of the two variables “$a1” and “$b1” and the echo statement is used to print if the function is called. Then Child1 class is used to extend the base11 class. In the extended class, again add1() variable is created to store the sum or the a1 and b1 variables. Then a new object is created and called by passing the variable values to the values $a1 and $b1 variables.

Code:

<?php
class base11
{
function add1($a1,$b1)
{
$res1=$a1*$b1;
echo "Multiplication = ".$res1;
}
}
class child1 extends base11
{
function add1($a1,$b1)
{
$res1=$a1+$b1;
echo "Sum  = ".$res1;
}
}
$obj= new child1();
$obj->add1(1000,500);
?>

Output:

Polymorphisme en PHP

Example #4

In the below example a class “BaseClass11” is created with the public function “myMethod()” is created with the echo statement to mention that “BaseClass11 method” is called that. Then again DerivedClass11 is created to extend the BaseClass11 with the same name function “myMethod()” with the echo statement to print “DerivedClass11 method called” like that. We are calling the same/similar naming function in different classes. Then new object is created for the function/ method “myMethod()”.

Code:

<?php
class BaseClass11
{
public function myMethod11()
{
echo "BaseClass11 method called";
}
}
class DerivedClass11 extends BaseClass11
{
public function myMethod11()
{
echo "DerivedClass11 method called";
}
}
function processClass11(BaseClass11 $c11)
{
$c11->myMethod11();
}
$c11 = new DerivedClass11();
processClass11($c11);
?>

Output:

Polymorphisme en PHP

Recommended Article

This is a guide to the Polymorphism in PHP. Here we discuss the what is the definition of Polymorphism and its Working along with its examples as well as Code Implementation. You can also go through our other suggested articles to learn more-

  1. PHP Frameworks
  2. basename in PHP
  3. Validation in PHP
  4. print_r() in PHP

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Article précédent:PHP imploseArticle suivant:PHP implose