php中的__call方法

时间:2013-10-28 15:57:19

标签: php arrays magic-methods

我在一个类中编写了一个自定义调用方法,然后由其他类扩展,以便以一种独特的方式调用方法。问题是 - 在类的侧面调用类自己的方法或不在现有方法的数组中的外部方法触发异常。

我希望改变这个调用方法来说:检查现有方法的数组,找不到?看一下这个方法是否存在 - 没找到?抛出异常。

该方法本身就是违法行为:

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数组中的什么,这对于“先看这里”有好处,但当方法来自不在该数组中的另一个对象时不好。

0 个答案:

没有答案