overload()

Aus php bar
Wechseln zu: Navigation, Suche

VERALTET: Diese(s) Funktion/Funktionalität/Verhalten ist ab PHP 5 veraltet und sollte nicht mehr verwendet werden.
Seit PHP 5 unterstützt jede Klasse das Überladen.

Die Funktion overload() aktiviert das Überladen von Eigenschaften und Methoden einer Klasse. In der Klasse müssen die Funktionen __get(), __set() und __call() definiert sein. Diese drei Methoden werden automatisch aufgerufen wenn auf Eigenschaften oder Methoden zugegriffen wird die nicht definiert sind.

Sollte versucht werden ein Wert einer Eigenschaft zuzuweisen, die nicht existiert, wird die Methode __set() mit dem Namen der Eigenschaft und dem zugewiesenen Wert aufgerufen. Bei Abfrage einer Eigenschaft, bei dem die selben Kriterien gelten, wird die Methode __get() mit entsprechendem Wert als Variablenübergabe aufgerufen. Bei Aufruf einer Methode entsprechender Kriterien wird die Methode __call() mit dem Namen der aufgerufenen Funktion und die übergebenen Argumente als Array aufgerufen.

 class foo {
     /**
      * Wird aufgerufen wenn eine nicht existierende
      * Eigenschaft aufgerufen (ausgegeben) wird
      *
      * @param string $name
      */
     function __get( $name ) {
         echo 'Die Eigenschaft ' . $name . ' ist nicht definiert.';
10     }
11 
12     /**
13      * Wird aufgerufen wenn eine nicht existierende
14      * Eigenschaft beschrieben wird
15      *
16      * @param string $name
17      * @param string $value
18      */
19     function __set( $name, $value ) {
20         echo 'Die Eigenschaft ' . $name . ' ist nicht definiert.';
21     }
22 
23     /**
24      * Wird aufgerufen wenn eine nicht existierende
25      * Mehtode aufgerufen wird
26      *
27      * @param string $name
28      * @param array  $values
29      */
30     function __call( $name, $values ) {
31         echo 'Die Methode ' . $name . ' ist nicht definiert.';
32     }
33 }
34 
35 overload('foo');
36 
37 $foo = new foo;
38 
39 // ruft $foo->_get( 'eigenschaft' ) auf
40 echo $foo->eigenschaft;
41 
42 // ruft $foo->_set( 'eigenschaft', true ) auf
43 $foo->eigenschaft = true;
44 
45 // ruft $foo->_call( 'methode', array( $argument ) ) auf
46 $foo->methode( $argument );



Meine Werkzeuge