我在一个类中编写了一个自定义调用方法,然后由其他类扩展以以独特的方式调用方法。问题是 - 在类内部调用类自己的方法或不在现有方法数组中的外部方法会触发异常。
我正在寻找改变这个调用方法说:检查现有方法的数组,没有找到?看看一般方法是否存在 - 没有找到?抛出异常。
该方法是这样的:
public function __call($name, $param = null){
foreach($this->_methods as $class_name=>$methods){
foreach($methods as $method){
if($name === $method){
return call_user_func_array(array($this->_class_objects[$class_name], $method), $param);
}
}
}
throw new AisisCore_Loader_LoaderException("Method: " .$name.
" does not exist or it's access is not public");
}
该方法的作用非常明显。但它仅限于$this->_methods
数组中的内容,这有利于“先看这里”,但当方法来自不在该数组中的另一个对象时则不好。