Hier werden die Unterschiede zwischen zwei Versionen gezeigt.
Nächste Überarbeitung | Vorhergehende Überarbeitung | ||
php:magische_methoden [2015/03/19 12:14] webproducer angelegt |
php:magische_methoden [2015/12/19 00:00] (aktuell) |
||
---|---|---|---|
Zeile 1: | Zeile 1: | ||
- | ==== Magische Methoden ==== | + | ====== Magische Methoden ====== |
- | Die sogenannten "Magischen Methoden" können innerhalb von Klassen angewendet werden. | + | Die sogenannten "Magischen Methoden" können innerhalb von PHP-Klassen angewendet werden. |
- | === Funktion "construct" === | + | ===== Funktion "construct" ===== |
Der Konstruktur wird beim Erstellen eines Objektes angelegt. | Der Konstruktur wird beim Erstellen eines Objektes angelegt. | ||
- | function __construct() | + | <code php> |
- | { | + | function __construct() |
- | echo "<p>Objekt wird angelegt</p>"; | + | { |
- | } | + | echo "<p>Objekt wird angelegt</p>"; |
+ | } | ||
+ | </code> | ||
- | === Funktion "call" === | + | ===== Funktion "call" ===== |
Diese Methode wird aufgerufen, wenn die angesprochene Methode nicht vorhanden ist. | Diese Methode wird aufgerufen, wenn die angesprochene Methode nicht vorhanden ist. | ||
- | function __call( $methode, $parameter ) | + | <code php> |
- | { | + | function __call( $methode, $parameter ) |
- | echo "<p>Methode '$methode' nicht vorhanden</p>"; | + | { |
- | } | + | echo "<p>Methode '$methode' nicht vorhanden</p>"; |
+ | } | ||
+ | </code> | ||
- | === Funktion "get" === | + | ===== Funktion "get" ===== |
Wenn eine nicht exisiterende Objekt-Variable ausgelesen werden soll, wird die Methode "get" ausgeführt. | Wenn eine nicht exisiterende Objekt-Variable ausgelesen werden soll, wird die Methode "get" ausgeführt. | ||
- | function __get( $var ) | + | <code php> |
- | { | + | function __get( $var ) |
- | echo "<p>Variable '$var' kann nicht ausgelesen werden.</p>"; | + | { |
- | } | + | echo "<p>Variable '$var' kann nicht ausgelesen werden.</p>"; |
+ | } | ||
+ | </code> | ||
- | === Funktion "set" === | + | ===== Funktion "set" ===== |
Wenn eine nicht existierende Objekt-Variable gesetzt werden soll, wird die Methode "set" ausgeführt. | Wenn eine nicht existierende Objekt-Variable gesetzt werden soll, wird die Methode "set" ausgeführt. | ||
- | function __set( $var, $wert ) | + | <code php> |
- | { | + | function __set( $var, $wert ) |
- | echo "<p>Variable '$var' kann nicht gesetzt werden.</p>"; | + | { |
- | } | + | echo "<p>Variable '$var' kann nicht gesetzt werden.</p>"; |
+ | } | ||
+ | </code> | ||
- | === Funktion "destruct" === | + | ===== Funktion "toString" ===== |
- | Der Destructor wird aufgerufen, wenn das Objekt nicht mehr angesprochen oder mit "unset ( $object )" vernichet wird. | + | Mit der toString()-Methode kann festgelegt werden, was ausgegeben wird, wenn das Objekt als Zeichenkette angefordert wird. |
- | function __destruct() | + | <code php> |
- | { | + | function __toString() |
- | echo "<p>Objekt wird vernichtet</p>"; | + | { |
- | } | + | return "Jetzt bin ich eine Zeichenkette!"; |
+ | } | ||
+ | </code> | ||
+ | |||
+ | ===== Funktion "destruct" ===== | ||
+ | |||
+ | |||
+ | Der Destructor wird aufgerufen, wenn das Objekt nicht mehr angesprochen oder mit "unset ( $object )" vernichet wird. | ||
+ | <code php> | ||
+ | function __destruct() | ||
+ | { | ||
+ | echo "<p>Objekt wird vernichtet</p>"; | ||
+ | } | ||
+ | </code> | ||
---- | ---- | ||
- | //Beispiel// | + | ==== Beispiel ==== |
+ | <code php> | ||
class abc | class abc | ||
{ | { | ||
Zeile 59: | Zeile 81: | ||
echo "<p>Objekt wird angelegt</p>"; | echo "<p>Objekt wird angelegt</p>"; | ||
} | } | ||
+ | |||
function __call( $methode, $parameter ) | function __call( $methode, $parameter ) | ||
{ | { | ||
Zeile 64: | Zeile 87: | ||
echo "<p>Methode '$methode' nicht vorhanden</p>"; | echo "<p>Methode '$methode' nicht vorhanden</p>"; | ||
} | } | ||
+ | |||
function __get( $var ) | function __get( $var ) | ||
{ | { | ||
Zeile 69: | Zeile 93: | ||
echo "<p>Variable '$var' kann nicht ausgelesen werden.</p>"; | echo "<p>Variable '$var' kann nicht ausgelesen werden.</p>"; | ||
} | } | ||
+ | |||
function __set( $var, $wert ) | function __set( $var, $wert ) | ||
{ | { | ||
Zeile 74: | Zeile 99: | ||
echo "<p>Variable '$var' kann nicht gesetzt werden.</p>"; | echo "<p>Variable '$var' kann nicht gesetzt werden.</p>"; | ||
} | } | ||
+ | |||
function __destruct() | function __destruct() | ||
{ | { | ||
Zeile 80: | Zeile 106: | ||
} | } | ||
} | } | ||
+ | |||
$test = new abc; // Ergebnis: "Objekt wird angelegt" | $test = new abc; // Ergebnis: "Objekt wird angelegt" | ||
- | $test->unbekannteMethode(); // Ergebnis: "Methode 'unbekannteMethode' nicht vorhanden" | + | echo $test; // Ergebnis: Jetzt bin ich eine Zeichenkette! |
- | $test->unbekannteVariable; // Ergebnis: "Variable 'unbekannteVariable' kann nicht ausgelesen werden." | + | $test->bla(); // Ergebnis: "Methode 'bla' nicht vorhanden" |
- | $test->unbekannteVariable = "Hallo"; // Ergebnis: "Variable 'unbekannteVariable' kann nicht gesetzt werden." | + | $test->bla; // Ergebnis: "Variable 'bla' kann nicht ausgelesen werden." |
+ | $test->bla = "Hallo"; // Ergebnis: "Variable 'bla' kann nicht gesetzt werden." | ||
// "Objekt wird vernichtet" | // "Objekt wird vernichtet" | ||
+ | </code> | ||