Классы: Вызовите «before - function» автоматически перед любой другой функцией - PullRequest
0 голосов
/ 28 июня 2019

Я пытаюсь сделать какой-то обработчик ошибок в одном из моих классов. Поэтому у моего класса есть переменная $error. Если это правда, он должен напечатать сообщение.

Эта процедура должна выполняться каждый раз перед вызовом функции этого класса

Я попробовал подход магический метод __call () , упомянутый в этом ответе: SO Ответ

К сожалению, это не работает.

class XXX extends YYY{
   public $error;
   public $var;

   function __construct($var)
   {
      $this->var = $var;
      $this->error = true; //test the error process
   }

   private function before(){
      if($this->error)
      {
         echo "something went wrong"; die;
      }
   }

   private function test(){
      echo "test", PHP_EOL;
   }

   public function __call($method,$arguments) {
       if(method_exists($this, $method)) {
           $this->before();
           return call_user_func_array(array($this,$method),$arguments);
       }
   }
}

Когда я звоню:

$a = new XXX($var);
$a->test();

Вывод по-прежнему:

/*
* Output:
* test
*/

Любые идеи будут очень признательны.

Спасибо

...