public function __construct() { $this->runTest('aus dem Objekt auf'); } public function __get($name) { return "Der Wert von '{$name}'"; } public function __call($name, $arguments) { // Achtung: Der Wert von $name beachtet die Groß-/Kleinschreibung echo "Rufe die Objektmethode '{$name}' " . implode(', ', $arguments) . "\n"; } /** Seit PHP 5.3.0 */ public static function __callStatic($name, $arguments) { // Achtung: Der Wert von $name beachtet die Groß-/Kleinschreibung echo "Rufe die statische Methode '{$name}' " . implode(', ', $arguments) . "\n"; echo "in der Klasse: " . __CLASS__ . "\n"; echo "aufgerufen in der Klasse: " . get_called_class() . "\n"; } } class extendedMagic extends Magic { } echo '<pre>'; $obj = new Magic(); echo $obj->magic . "\n"; $obj->runTest('eines Objektes auf'); Magic::runTest('aus statischem Kontext auf'); extendedMagic::runTest('aus anderem statischem Kontext auf');