php 5.3에는 __call 및 __callStatic 매직 메소드가 추가되었습니다.
__call 호출하려는 메소드가 존재하지 않거나 권한이 부족한 경우 __call 메소드가 자동으로 호출됩니다.
__callStatic 호출된 정적 메서드가 존재하지 않거나 권한이 부족한 경우 __callStatic 메서드가 자동으로 호출됩니다.
__call($funcname, $arguments)
__callStatic($funcname, $arguments)
매개변수 설명:
$funcname String 이름 라는 메서드입니다.
$arguments 메소드를 호출할 때 사용되는 배열 매개변수입니다.
__call example
<?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 example
<?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(); ?>
이 글에서는 php __call과 __callStatic에 대해 설명하고 있으니 php 중국어 홈페이지를 참고해주세요.
관련 권장 사항:
PHPMailer 정보 - PHP 이메일 전송 클래스 관련 설명
폴더 탐색, 파일 클래스 및 처리 클래스에 대한 PHP 이해
위 내용은 PHP __call 및 __callStatic 설명의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!