我的代码是这样的:classstdObject{publicfunction__construct(array$params=array()){if(!empty($params))foreach($paramsas$key=>$value)$this->{$key}=$value;}publicfunction__call($methodName,$params){$params=array_merge(array('stdObject'=>$this),$params);if(isset($this->{$methodName})&&is_callable($methodName)){//$params就是函数的参数,这里的stdObject就是function中的$stdObject;returncall_user_func_array($methodName,$params);}else{thrownewException("Fatalerror:CalltoundefinedmethodstdObject::{$methodName}()");}}}echophpversion();$obj=newstdObject();$obj->name="Nick";$obj->surname="Doe";$obj->age=20;$obj->adresse=null;$obj->getInfo=function($stdObject){//$stdObjectreferredtothisobject(stdObject).echo$stdObject->name."".$stdObject->surname."have".$stdObject->age."yrsold.Andlivein".$stdObject->adresse;};print_r($obj);$obj->getInfo();?>首先,按道理说,调用一个类中间不存在的成员变量,因该显示的的调用魔术方法_set,但是这里没有显示的声明_set方法;2.为什么我无法调用$obj->getInfo()方法呢?一旦调用就会抛出异常'Fatalerror:CalltoundefinedmethodstdObject::getInfo(),就说明这个方法不存在
喵喵时光机
相关分类