Create a processing function in the class



  • I cannot understand why this approach is not working.

    class MyClass {
        private $ErrorHandler = null;
    
    // Зарегистрировать обработчик ошибок
    public function RegisterErrorHandler($ErrorHandlerFn) {
        $this->ErrorHandler = $ErrorHandlerFn;
    }
    
    // Симуляция ошибки
    public function TestError(){
        if($this->ErrorHandler) { // Если определен обработчик ошибок
            $this->ErrorHandler('Текст ошибки');
        }
    }
    

    }

    $myClass = new MyClass();

    $myClass->RegisterErrorHandler(function($errorText){
    echo $errorText;
    });

    $myClass->TestError();

    At a time when this code

    $ErrorHandler = function($errorText){
    echo $errorText;
    };

    $ErrorHandler('Текст ошибки');



  • In this case, php tries to cause an undetermined function MyClass::ErrorHandlerFor bypass can be used call_user_func

    public function TestError(){
        if(is_callable($this->ErrorHandler)) { // Если определен обработчик ошибок
            call_user_func($this->ErrorHandler,'Текст ошибки');
        }
    }
    

    http://ideone.com/OlKa0e




Suggested Topics

  • 2
  • 2
  • 2
  • 2
  • 2
  • 2
  • 2
  • 2
  • 2
  • 2
  • 2
  • 2
  • 2
  • 2
  • 2