overload()
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.
1 class foo { 2 /** 3 * Wird aufgerufen wenn eine nicht existierende 4 * Eigenschaft aufgerufen (ausgegeben) wird 5 * 6 * @param string $name 7 */ 8 function __get( $name ) { 9 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 );