这是前提:
我有很多类,我需要在调用任何类的任何方法之前执行操作,我的解决方案是让所有类扩展一个父类,该父类将定义一个 call() 函数,如下所示:
public function call($method){
//do the something I need to do before method calls
$params = func_get_args();
//remove the $method param from the $params array
unset($params[0]);
return $this->__call($method,$params);
}
然后只需调用 call 方法并指定我想要调用的实际方法,这样该方法就会被调用,但是在 call 方法(该类从我的父类继承)中,我可以执行我需要执行的操作在调用指定的方法之前退出。
这需要能够支持可能是数组或字符串的参数,因此任何涉及内爆参数数组的操作都将不起作用(因为这会假设所有参数都是字符串)。
我不确定我上面所说的是否有意义,我想检查一下我是否以错误的方式处理这个问题。
任何想法/想法将不胜感激。
谢谢!
PS:我应该注意,我对上述情况的描述听起来像是子类扩展父类的原因仅仅是为了这个目的,实际上还有更多原因(我的父类扩展了 Zend_Db_Table_Abstract,我的数据库模型扩展了父类) .