简体   繁体   中英

PHP before action and after action

I would like to know how can I do something similar with beforeAction() and afterAction() from Yii.

I need to have the same behavior in my PHP like those two functions from Yii and I don't know where to start from.

What I really need in my case is that every time a function executes, it has to reload some parameters and after the function executes it's code, it has to set them again.

The first action can be done in the constructor but the second one can only be done using a callback and this is not quite lovely.

I also need to implement this because the number of functions is about 30 and each one is doing something similar. Using this kind of behaviors I'll reduce the code size with about 70%.

function a1(){
  load();
  procA1();
  set();
}

function a2(){
  load();
  procA2();
  set();
}

function a3(){
  load();
  procA3();
  set();
}
and so on...

Updated: Use call_user_func($function_name, (optional) $parametrs) + magic __call method. It is exactly the same as in 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;
   }
}

Now you can simple call $object->a3() . You can have function named a3 in the class, but add private modifier to it.

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM