Maison > Article > développement back-end > Explication de php __call et __callStatic
Les méthodes magiques __call et __callStatic ont été ajoutées après PHP 5.3.
__call Lorsque la méthode à appeler n'existe pas ou dispose d'autorisations insuffisantes, la méthode __call est automatiquement appelée.
__callStatic Lorsque la méthode statique appelée n'existe pas ou dispose d'autorisations insuffisantes, la méthode __callStatic sera automatiquement appelée.
__call($funcname, $arguments)
__callStatic($funcname, $arguments)
Description du paramètre :
$funcname String Le nom de la méthode à utiliser être appelé.
$arguments Paramètres du tableau pris lors de l'appel de la méthode.
__exemple d'appel
<?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(); ?>
__exemple d'appelStatic
<?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(); ?>
Cet article explique php __call et __callStatic Pour plus de connaissances connexes, veuillez prêter attention au site Web chinois de php.
Recommandations connexes :
À propos des commandes courantes et des instructions d'utilisation de Memcached
Explications connexes sur PHPMailer - Classe de transport de courrier électronique PHP
Compréhension de la traversée PHP des dossiers, des classes de fichiers et des classes de traitement
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!