| |
| * Link führt ins Internet |
|
| |
Überladen von Klassen durch Overloading
|
|
Bei einer weiteren Extension, handelt es sich um das Overloading, sie ermöglicht das benutzerdefinierter Überladen (eng. Overloading) der Zugriffe auf Klassenvariablen und Methodenaufrufe, wodurch allgemein die Existenz von Methoden gleichen Namens möglich ist, sofern sie sich in der Art oder Anzahl ihrer Parameter unterscheiden. Die Overloading-Extension stellt lediglich eine Funktion zur Verfügung und zwar overload(), welche den Namen der Klasse benötigt, um das Überladen von Eigenschaften und Methoden einer Klasse zu aktivieren. Um das Überladen zu ermöglichen, müssen allerdings entsprechende Methoden, wie __get(), __set() und __call() innerhalb des Objekts deklariert werden.
Beispielsweise ist es hiermit möglich, dass eine bestimmte Aktion automatisch ausgeführt wird, wenn auf eine Klassenvariable das erste Mal zugegriffen wird. Im Falle einer Datenbankverbindung könnte dies dazu genutzt werden, dass diese nicht bereits im Konstruktor der Klasse aufgebaut wird, sondern erst dann, wenn sie benötigt wird:
<?php
class DatenBank {
function __get($propertyName, &$propertyValue) {
switch ($propertyName) {
case "verbindung": {
if (!isset($this->verbindung)) {
$this->verbindung = $this->verbinden();
}
$propertyValue = $this->verbindung;
}
break;
}
return true;
}
}
echo overload('DatenBank');
?>
|
Die Methode __get() aus obigem Beispiel wird automatisch bei jedem Zugriff auf Membervariablen aufgerufen. Bei dem ersten dieser Aufrufe für die Variable $this->verbindung wird die eigentliche Verbindung zur Datenbank durch die Methode $this->verbinden() hergestellt und in $this->verbindung abgelegt. Ähnlich wie __get() können mit __set() und __call() callbacks für schreibende Zugriffe auf Membervariablen sowie für Methodenaufrufe definiert werden.
| Achtung: Die Overloading-Funktion steht seit PHP 4.2 zur Verfügung und ist als experimentell zu bezeichnen. |
|
|
|
|
|
|
|