#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;
}