PHP在行动之前和行动之后

时间:2013-12-29 14:44:53

标签: php yii action

我想知道如何使用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...

1 个答案:

答案 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修饰符。