php 5.3 後新增了 __call 與__callStatic 魔法方法。
__call 當要調用的方法不存在或權限不足時,會自動調用__call 方法。
__callStatic 當調用的靜態方法不存在或權限不足時,會自動調用__callStatic方法。
__call($funcname, $arguments)
__callStatic($funcname, $arguments)
參數說明:
$funcname String 調用的方法名稱。
$arguments Array 調用方法時所帶的參數。
__call 例子
<?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(); ?>
查看本欄目