Heim > Artikel > Backend-Entwicklung > Polymorphismus in PHP
Polymorphismus ist eines der guten Konzepte der PHP Object Oriented Programming Language-Funktionen (OOPS-Funktionen). Das Wort Polymorphismus leitet sich eigentlich von den beiden griechischen Wörtern „Poly“ und „Morph“ ab. Die Bedeutung von Poly ist „viele“ und Morph bedeutet „Formen“. Es bedeutet die Fähigkeit, viele Formen anzunehmen. Im Allgemeinen ist Polymorphismus ein objektorientiertes Programmiermuster, bei dem die Klasse über verschiedene Funktionalitäten verfügt und gleichzeitig über gemeinsame Schnittstellen verfügt. Tatsächlich gibt es zwei Arten von Polymorphismus: Kompilierungszeit und Laufzeit. PHP unterstützt keinen Polymorphismus zur Kompilierungszeit, was eine Überladung von Funktionen und Operatoren bedeutet.
WERBUNG Beliebter Kurs in dieser Kategorie PHP-ENTWICKLER - Spezialisierung | 8-Kurs-Reihe | 3 ProbetestsStarten Sie Ihren kostenlosen Softwareentwicklungskurs
Webentwicklung, Programmiersprachen, Softwaretests und andere
Syntax:
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. } }
Erklärung:
In der obigen Syntax haben wir zwei Klassen erstellt, eine ist normal und die andere dient der Erweiterung der Klasse, aber wir haben denselben Funktionsnamen/dieselbe Methode für verschiedene Funktionalitäten verwendet. Dies wird als Poly-Morphing bezeichnet. Bei Bedarf können in der Codierung viele ähnliche Namen von Funktionen/Methoden mit unterschiedlichen Funktionalitäten verwendet werden.
Der Polymorphismus von PHP basiert auf dem Konzept des Laufzeitpolymorphismus. In PHP funktioniert Polymorphismus, indem er die Entscheidung zur Laufzeit trifft, was eigentlich kein Polymorphismuskonzept zur Kompilierungszeit ist. Andernfalls können wir sagen, dass wir viele/mehrere Implementierungen haben, die Untertypen für eine Superklasse sind. Das Laufzeitkonzept (Funktionsüberladung) ist ein Konzept Beispiel für Polymorphismus der PHP-Programmiersprache.
Funktionsüberladung bedeutet das Ableiten einer Klasse von einer neu erstellten Funktion mit derselben Signatur (das bedeutet, dass die Funktion denselben Namen, denselben Typ und eine Reihe von Argumenten hat) in ihrer übergeordneten Klasse wie eine Funktion, die als Methodenüberschreibung aufgerufen wird . In diesem Polymorphismus-Konzept kann man Funktionen durch Erweitern erstellen, aber um das Polymorphismus- und Vererbungskonzept zu verarbeiten, sollte derselbe Name/eine ähnliche Benennungsfunktion beteiligt sein. Um die Programmierfähigkeit durch die Erweiterung der Funktionalitäten der Klasse zu verbessern, ist der Polymorphismus der gemeinsamen Schnittstellen ein Muss.
Unten sind die Beispiele für Polymorphismus in PHP:
Im folgenden Beispiel wird eine der Basisklassen „Shap1“ erstellt. Hier werden wir die Klasse Shap1 in den drei abgeleiteten Klassen erben. Die Klassennamen sind Circle1, Triangle1 und Elliipse1. Jede einzelne Klasse verfügt über die Funktion „Draw“, um den Laufzeitpolymorphismus der Programmiersprache PHP zu vervollständigen. Im folgenden Aufrufprozess erstellen wir ein Array mit der Länge 2 und der Index jedes Arrays ist hilfreich beim Erstellen eines Objekts einer Klasse. Danach verwenden wir eine Schleife, die basierend auf der Länge des Arrays ausgeführt wird, das einen Wert „$i1“ hat, der an die Objekt-Array-Variable „$Val1[$i1]“ übergeben wird. Es wird also dreimal ausgeführt und mit der Methode draw() jeder einzelnen Klasse aufgerufen.
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(); } ?>
Ausgabe:
Dies ist das Beispiel der Umsetzung des Polymorphismus-Konzepts mit der Schnittstellenhilfe. Schnittstelle(n) sind/sind jeder Klasse sehr ähnlich, mit der Ausnahme, dass sie keinen Code enthält. Die Schnittstelle hilft bei der Definition der Methodennamen und auch der Methodenargumente, hier werden jedoch die Inhalte der Methoden nicht definiert. Die Schnittstelle, die von einer beliebigen Klasse/Klassen ausgeführt wird, muss von allen Methoden ausgeführt werden, die durch die Schnittstelle gekennzeichnet sind.
Hier verfügt Maschine1 über alle Klassen, um calcTask1 zu definieren. Circle1 implementiert die CallTask1()-Methode. Rechteck1 versucht ebenfalls, eine Maschinenschnittstelle zu implementieren, definiert diese jedoch mit einem anderen Körper der calcTask1()-Methode. Der Polymorphismus besagt, dass alle Methoden, die die Aufgabe berechnen, einen äquivalenten Namen haben sollten. Wir werden die verschiedenen Namen von calcTask1() nennen, ohne die Details anzugeben. Wichtig ist hier der Name der Methode, die die Aufgabe berechnet.
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(); ?>
Ausgabe:
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:
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:
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-
Das obige ist der detaillierte Inhalt vonPolymorphismus in PHP. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!