|
Überladung
Überladung bietet in PHP Möglichkeiten, um dynamisch
Eigenschaften und Methoden zu
Die Überladungsmethoden werden aufgerufen, wenn mit
Eigenschaften oder Methoden interagiert wird, die entweder
nicht deklariert wurden oder im aktuellen Geltungsbereich
nicht sichtbar
sind. Im Rest dieses Abschnitts werden die Begriffe
Alle Überladungsmethoden müssen als public definiert sein.
Changelog
Überladung von Eigenschaften
public void __set
( string
$name
, mixed $value
)
public mixed __get
( string
$name
)
public bool __isset
( string
$name
)
public void __unset
( string
$name
)__set wird aufgerufen, wenn Daten in unzugreifbare Eigenschaften geschrieben werden sollen. __get wird verwendet, um Daten aus unzugreifbaren Eigenschaften zu lesen. __isset wird aufgerufen, indem isset oder empty auf unzugreifbare Eigenschaften angewendet wird. __unset wird aufgerufen, wenn unset für unzugreifbaren Eigenschaften aufgerufen wird. Der Parameter $name beinhaltet den Namen der Eigenschaft, mit der interagiert wird. Der Parameter $value der Funktion __set spezifiziert den Wert den die Eigenschaft $name annehmen soll. Überladung von Eigenschaften funktioniert nur im Kontext von Objekten. Diese magischen Methoden werden nicht aus einem statischen Kontext aufgerufen. Diese Methoden sollten daher nicht als static deklariert werden. Seit PHP 5.3.0 wird eine Warnung ausgegeben, wenn eine dieser magischen Überladungsmethoden als static deklariert ist.
Beispiel #1 Überladung von Eigenschaften mit den Methoden __get, __set, __isset und __unset
<?phpDas oben gezeigte Beispiel erzeugt folgende Ausgabe: Setze 'a' auf '1' Lese 'a' 1 Ist 'a' gesetzt? bool(true) Lösche 'a' Ist 'a' gesetzt? bool(false) 1 Wir experimentieren nun mit der private-Eigenschaft 'hidden': Private ist innerhalb der Klasse sichtbar, also wird __get() nicht benutzt... 2 Private nicht sichtbar von außerhalb der Klasse, also wird __get() benutzt... Lese 'hidden' Notice: Undefinierte Eigenschaft für __get(): hidden in <file> Zeile 70 in <file> on line 29 Überladung von Methoden
public mixed __call
( string
$name
, array $arguments
)
public static mixed __callStatic
( string
$name
, array $arguments
)__call wird aufgerufen, wenn eine unzugreifbare Methode in einem Objekt aufgerufen wird. __callStatic wird aufgerufen, wenn eine unzugreifbare Methode in einem statischen Kontext aufgerufen wird. Der Parameter $name ist der Name der aufgerufenen Methode. Der Parameter $arguments beinhaltet ein Array mit den Parametern, die der Methode $name übergeben wurden. Beispiel #2 Überladung von Methoden mit den methoden __call und __callStatic
<?phpDas oben gezeigte Beispiel erzeugt folgende Ausgabe: Rufe die Objektmethode 'runTest' eines Objektes auf Rufe die statische Methode 'runTest' aus statischem Kontext auf |