簡體   English   中英

PHP在行動之前和行動之后

[英]PHP before action and after 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...

更新:使用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修飾符。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM