php的__call 与__callStatic 魔法方法2014-08-29php 5.3 后新增了 __call 与__callStatic 魔法方法。__call 当要调用的方法不存在或权限不足时,会自动调用__call 方法。__callStatic 当调用的静态方法不存在或权限不足时,会自动调用__callStatic方法。__call($funcname, $arguments)__callStatic($funcname, $arguments)参数说明:$funcname String 调用的方法名称。$arguments Array 调用方法时所带的参数。__call 例子
<?phpclass 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();?>