Maison  >  Article  >  développement back-end  >  Que signifie le polymorphisme en php

Que signifie le polymorphisme en php

藏色散人
藏色散人original
2021-05-08 09:15:012709parcourir

Le polymorphisme en PHP signifie littéralement « formes multiples », qui peuvent être comprises comme plusieurs formes d'expression, c'est-à-dire « une interface externe, plusieurs méthodes d'implémentation internes » dans la théorie orientée objet. la même opération produira des résultats d’exécution différents lorsqu’elle sera appliquée à des instances de classes différentes.

Que signifie le polymorphisme en php

L'environnement d'exploitation de cet article : système Windows7, version PHP7.1, ordinateur DELL G3

Polymorphisme PHP

Le polymorphisme signifie que la même opération, fonction ou processus peut être appliqué à plusieurs types d'objets et obtenir des résultats différents. Différents objets peuvent produire des résultats différents lorsqu'ils reçoivent le même message. Ce phénomène est appelé polymorphisme.

Le polymorphisme permet à chaque objet de répondre à sa manière à un message commun. Le polymorphisme améliore la flexibilité et la réutilisabilité des logiciels.

Dans le développement de logiciels orientés objet, le polymorphisme est l'un des éléments les plus importants. La programmation orientée objet ne consiste pas simplement à combiner des méthodes et des données associées, mais à utiliser divers éléments de la programmation orientée objet pour décrire clairement diverses situations de la vie réelle. Cette section fournira une explication détaillée du polymorphisme dans la programmation orientée objet.

1. Qu'est-ce que le polymorphisme ?

Le polymorphisme signifie littéralement « formes multiples ». Il peut être compris comme plusieurs formes d'expression, c'est-à-dire « une interface externe et plusieurs méthodes de mise en œuvre internes ». Dans la théorie orientée objet, la définition générale du polymorphisme est la suivante : la même opération produira des résultats d'exécution différents lorsqu'elle sera appliquée à des instances de classes différentes. Autrement dit, lorsque des objets de types différents reçoivent le même message, ils obtiendront des résultats différents.

Dans le développement d'applications réels, la principale raison de l'utilisation du polymorphisme orienté objet est que différents objets de sous-classe peuvent être traités comme une seule classe parent et que les différences qui existent entre les différents objets de sous-classe peuvent être masquées. coder et élaborer une programmation commune pour s'adapter à l'évolution des besoins.

Apprentissage recommandé : "Tutoriel vidéo PHP"

2. Conception d'applications polymorphes

dans le développement d'applications réelles Afin de Pour permettre au projet de s'étendre et de se mettre à niveau facilement à l'avenir, il est généralement nécessaire d'implémenter des modules réutilisables via l'héritage pour des mises à niveau faciles. Lors de la conception de modules réutilisables, il est nécessaire de réduire autant que possible l’utilisation d’instructions de contrôle de flux. À ce stade, vous pouvez utiliser le polymorphisme pour implémenter ce type de conception.

【Exemple】 illustre différents types de traitement qui sont généralement mis en œuvre à l'aide d'instructions de contrôle de flux. Le code est affiché ci-dessous.

class painter{ //定义油漆工类
public function paintbrush(){ //定义油漆工动作
echo "油漆工正在刷漆!\n";
}
}
class typist{ //定义打字员类
public function typed(){ //定义打字员工作
echo "打字员正在打字!\n";
}
}
function printworking($obj){ //定义处理类
if(objinstanceofpainter)//若对象是油漆工类,则显示油漆工动作$obj−>paintbrush();elseif(obj instanceof typist){ //若对象是打字员类,则显示打字员动作
$obj->typed();
}else{ //若非以上类,则显示出错信息
echo "Error: 对象错误!";
}
}
printworking(new painter()); //显示员工工作
printworking(new typist()); //显示员工工作

Analyse : Dans le programme ci-dessus, définissez d'abord deux classes d'employés : la classe peintre et la classe dactylographe. Définissez ensuite une fonction de traitement. Dans cette fonction, il est déterminé si l'employé est un employé défini et son statut de travail est imprimé. Les résultats sont présentés ci-dessous.

油漆工正在刷漆  
打字员正在打字

Il ressort facilement du programme ci-dessus que si vous souhaitez afficher le statut de travail de plusieurs employés, vous devez d'abord définir la classe d'employés, définir le travail de l'employé dans la classe d'employés, puis utiliser la fonction printworking() Ajoutez une instruction elseif pour vérifier de quelle classe d'employés l'objet est une instance. Ceci est très indésirable dans les applications pratiques. Si le polymorphisme est utilisé à ce stade, ce problème peut être facilement résolu.

Vous pouvez d'abord créer une classe parent d'employé. Toutes les classes d'employé hériteront de la classe parent d'employé et hériteront de toutes les méthodes et attributs de la classe parent. Créez ensuite une relation « est un » dans la classe d'employés pour déterminer s'il s'agit d'un employé légal.

【Exemple】 L'exemple ci-dessus est réécrit en utilisant le polymorphisme. Le code est affiché ci-dessous.

class employee{//定义员工父类
protected function working(){//定义员工工作,需要在子类的实现
echo "本方法需要在子类中重载!";
}
}
class painter extends employee{//定义油漆工类
public function working(){//实现继承的工作方法
echo "油漆工正在刷漆!\n";
}
}
class typist extends employee{//定义打字员类
public function working(){
echo "打字员正在打字!\n";
}
}
class manager extends employee{//定义经理类
public function working(){
echo "经理正在开会!";
}
}
function printworking($obj){//定义处理方法
if($obj instanceof employee){//若是员工对象,则显示其工作状态
$obj->working();
}else{//否则显示错误信息
echo "Error: 对象错误!";
}
}
printworking(new painter());//显示油漆工的工作
printworking(new typist());//显示打字员的工作
printworking(new manager());//显示经理的工作

Analyse : Dans le programme ci-dessus, définissez d'abord une classe de base d'employés , et définissez une méthode pour le statut de travail des employés. Définissez ensuite trois classes d'employés qui hériteront de la classe de base des employés : Peintre, Dactylo et Manager. Définissez ensuite une méthode pour afficher le statut de travail de l'employé. Et créez une relation « est-un » dans cette méthode pour déterminer s'il s'agit d'un employé légal. Les résultats sont présentés ci-dessous.

油漆工正在刷漆! 
打字员正在打字! 
经理正在开会!

À partir de l'exemple ci-dessus, nous pouvons constater que quel que soit le nombre de classes d'employés ajoutées, il vous suffit d'implémenter la classe d'employés et les méthodes héritées de la classe parent d'employés. Il n'est pas nécessaire de modifier la méthode printing() qui affiche le statut de travail des employés.

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