Polymorphismus ist ein Konzept in der objektorientierten Programmierung (OOP), das es Objekten ermöglicht, durch eine gemeinsame Schnittstelle unterschiedlich zu agieren. In PHP, einer skriptbasierten Programmiersprache, wird Polymorphismus oft durch Interface und Vererbung erreicht. Dies bedeutet, dass Klassen unterschiedliche Implementierungen für dieselbe Methode anbieten können, solange sie eine gemeinsame Schnittstelle teilen.
Ein einfaches Beispiel für Polymorphismus in PHP könnte wie folgt aussehen:
```php
interface Shape {
public function area();
}
class Circle implements Shape { private $radius;
public function __construct($radius) { $this->radius = $radius; } public function area() { return pi() * pow($this->radius, 2); } }class Rectangle implements Shape { private $width; private $height;
public function __construct($width, $height) { $this->width = $width; $this->height = $height; } public function area() { return $this->width * $this->height; } }$shapes = [
new Circle(10),
new Rectangle(5, 10)
];
foreach ($shapes as $shape) {
echo ‘Area: ‘ . $shape->area() . PHP_EOL;
}
```
In diesem Beispiel implementieren sowohl die Klassen `Circle` als auch `Rectangle` das Interface `Shape`, was bedeutet, dass beide Klassen die `area`-Methode haben müssen. Egal welche Art von `Shape`-Objekt innerhalb des Arrays `$shapes` enthalten ist, können wir die Methode `area()` aufrufen und das richtige Ergebnis wird zurückgegeben.
Polymorphismus verbessert die Flexibilität und Wartbarkeit des Codes erheblich. Dadurch kann man gemeinsame Schnittstellen schaffen und dann konkrete Implementierungen spezifizieren, wobei der spezifische Implementierungsdetails oft irrelevant sind.
Zwei Hauptarten von Polymorphismus sind:
1. Compile-Time Polymorphism (auch bekannt als Method Overloading): PHP unterstützt keine explizite Überladung von Methoden wie einige andere Sprachen (z.B. Java oder C++), aber man kann ähnliche Effekte via optionale Parameter oder durch unterschiedliche Methoden erreichen.
2. Run-Time Polymorphism (auch bekannt als Method Overriding): Dies wird in PHP durch die Vererbung erreicht, wenn eine Methode in einer Kindklasse die Methode der Elternklasse überschreibt. Zum Beispiel:
```php
class ParentClass {
public function greet() {
echo “Hello from ParentClass”;
}
}
class ChildClass extends ParentClass {
public function greet() {
echo “Hello from ChildClass”;
}
}
$parent = new ParentClass();
$child = new ChildClass();
$parent->greet(); // Ausgabe: Hello from ParentClass
$child->greet(); // Ausgabe: Hello from ChildClass
```
Die Quelle dieses Wissens basiert primär auf der offiziellen PHP-Dokumentation und etablierten Programmierungsressourcen:
1. [PHP Official Documentation](https://www.php.net/manual/en/)
2. [GeeksforGeeks PHP Polymorphism](https://www.geeksforgeeks.org/polymorphism-in-php/)
3. [w3schools PHP OOP](https://www.w3schools.com/php/php_oop_polymorphism.asp)
Zusammengefasst erlaubt Polymorphismus in PHP, dass Objekte je nach ihrem tatsächlichen Typ auf verschiedene Weise aufgerufen und verarbeitet werden. Dies erhöht die Flexibilität und Modularität des Codes und erleichtert die Wartung und Erweiterung von Anwendungen.