Heim >Backend-Entwicklung >PHP-Tutorial >Erklärung von PHP __call und __callStatic
Die magischen Methoden __call und __callStatic wurden nach PHP 5.3 hinzugefügt.
__call Wenn die aufzurufende Methode nicht existiert oder nicht über ausreichende Berechtigungen verfügt, wird die __call-Methode automatisch aufgerufen.
__callStatic Wenn die aufgerufene statische Methode nicht existiert oder nicht über ausreichende Berechtigungen verfügt, wird die __callStatic-Methode automatisch aufgerufen.
__call($funcname, $arguments)
__callStatic($funcname, $arguments)
Parameterbeschreibung:
$funcname String Der Name der Methode aufgerufen werden.
$arguments Array-Parameter, die beim Aufruf der Methode verwendet werden.
__call-Beispiel
<?php class Member{ protected $memberdata = array(); public function __call($func, $arguments){ list($type, $name) = explode('_', $func); if(!in_array($type, array('set','get')) || $name==''){ return ''; } switch($type){ case 'set': $this->memberdata[$name] = $arguments[0]; break; case 'get': return isset($this->memberdata[$name])? $this->memberdata[$name] : ''; break; default: } } } class User extends Member{ public function show(){ if($this->memberdata){ foreach($this->memberdata as $key=>$member){ echo $key.':'.$member.'<br>'; } } } } class Profession extends Member{ public function show(){ if($this->memberdata){ foreach($this->memberdata as $key=>$member){ echo $key.':'.$member.'<br>'; } } } } $userobj = new User(); $userobj->set_name('fdipzone'); $userobj->set_age(29); $userobj->show(); $probj = new Profession(); $probj->set_profession('IT SERVICE'); $probj->set_price(2500); $probj->show(); ?>
__callStatic-Beispiel
<?php class Member{ protected static $memberdata = array(); public static function __callStatic($func, $arguments){ list($type, $name) = explode('_', $func); if(!in_array($type, array('set','get')) || $name==''){ return ''; } $feature = get_called_class(); switch($type){ case 'set': self::$memberdata[$feature][$name] = $arguments[0]; break; case 'get': return isset(self::$memberdata[$feature][$name])? self::$memberdata[$feature][$name] : ''; break; default: } } } class User extends Member{ public static function show(){ $feature = get_called_class(); if(self::$memberdata[$feature]){ foreach(self::$memberdata[$feature] as $key=>$member){ echo $key.':'.$member.'<br>'; } } } } class Profession extends Member{ public static function show(){ $feature = get_called_class(); if(self::$memberdata[$feature]){ foreach(self::$memberdata[$feature] as $key=>$member){ echo $key.':'.$member.'<br>'; } } } } User::set_name('fdipzone'); User::set_age(29); User::show(); Profession::set_profession('IT SERVICE'); Profession::set_price(2500); Profession::show(); ?>
In diesem Artikel wird PHP __call und __callStatic erläutert. Weitere Informationen finden Sie auf der chinesischen PHP-Website.
Verwandte Empfehlungen:
Über allgemeine Memcached-Befehle und Gebrauchsanweisungen
Verwandte Erklärungen zu PHPMailer – PHP-E-Mail-Transportklasse
Verständnis der PHP-Traversierung von Ordnern, Dateiklassen und Verarbeitungsklassen
Das obige ist der detaillierte Inhalt vonErklärung von PHP __call und __callStatic. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!