我想知道如何使用Yii的beforeAction()和afterAction()做类似的事情。
我需要在PHP中使用与Yii中的两个函数相同的行为,我不知道从哪里开始。
在我的情况下,我真正需要的是每次执行函数时,都必须重新加载一些参数,在函数执行代码之后,必须再次设置它们。
第一个动作可以在构造函数中完成,但第二个动作只能使用回调来完成,这不是很可爱。
我还需要实现这个,因为函数的数量大约是30,每个函数都在做类似的事情。使用这种行为,我将减少约70%的代码大小。
function a1(){
load();
procA1();
set();
}
function a2(){
load();
procA2();
set();
}
function a3(){
load();
procA3();
set();
}
and so on...
答案 0 :(得分:2)
<强>更新强>
使用call_user_func($function_name, (optional) $parametrs)
+ magic __call
方法。它和Yii完全一样。
public function __call($name,$args) {
if (method_exists($this,$name)) {
$this->beforeAction();
$ret = call_user_func_array(array($this, $name), $args);
$this->afterAction();
return $ret;
}
}
现在您可以简单地致电$object->a3()
。您可以在类中使用名为a3
的函数,但可以向其添加private
修饰符。