Альтернатива аргументу $errcontext обработчика ошибок в php

#php #function #magento

#php #функция #magento

Вопрос:

Я обновляю версию php с 7.0.3 до 7.2.33

Я вижу, что "$errcontext argument of error handler" это устарело

и я обнаружил, что в файле in Magento 1 framework используется это, как показано ниже

  public function errorHandler($errno, $errstr, $errfile, $errline, $errcontext)
{
    $errorLevel = error_reporting();

    if ($errorLevel amp; $errno) {
        
        $this->log($errstr, $priority, array('errno'=>$errno, 'file'=>$errfile, 'line'=>$errline, 'context'=>$errcontext));
    }

    if ($this->_origErrorHandler !== null) {
        return call_user_func($this->_origErrorHandler, $errno, $errstr, $errfile, $errline, $errcontext);
    }
    return false;
}
  

Согласно документам PHP :-
Аргумент $errcontext содержит все локальные переменные сайта ошибки. Учитывая его редкое использование и проблемы, которые он вызывает при внутренней оптимизации, теперь он устарел.
Вместо этого следует использовать отладчик для получения информации о локальных переменных в месте ошибки.

Как мне изменить эту функцию, чтобы она не выдавала предупреждение и работала нормально?

Дайте мне знать, если возникнут какие-либо вопросы.

Ответы приветствуются

Ответ №1:

Удалите $errcontext из своей функции и рассмотрите возможность рефакторинга $this->log() для устранения контекстного ключа существует строгое требование к параметру контекста:

      public function errorHandler($errno, $errstr, $errfile, $errline)
    {
        $errorLevel = error_reporting();
    
        if ($errorLevel amp; $errno) {
            
            $this->log($errstr, $priority, array('errno'=>$errno, 'file'=>$errfile, 'line'=>$errline, 'context'=>'Context not supported or deprecated'));
        }
    
        if ($this->_origErrorHandler !== null) {
            return call_user_func($this->_origErrorHandler, $errno, $errstr, $errfile, $errline);
        }
        return false;
    }