Есть ли способ получить последнюю ошибку в php4 - PullRequest
1 голос
/ 01 июля 2011

PHP 5 имеет error_get_last.Есть ли способ полностью или хотя бы частично воспроизвести ту же функциональность в PHP4.3?

Ответы [ 2 ]

3 голосов
/ 01 июля 2011

Извлечено из руководства PHP (любезно предоставлено php в joert dot net):

<?php
if( !function_exists('error_get_last') ) {
    set_error_handler(
        create_function(
            '$errno,$errstr,$errfile,$errline,$errcontext',
            '
                global $__error_get_last_retval__;
                $__error_get_last_retval__ = array(
                    \'type\'        => $errno,
                    \'message\'        => $errstr,
                    \'file\'        => $errfile,
                    \'line\'        => $errline
                );
                return false;
            '
        )
    );

    function error_get_last() {
        global $__error_get_last_retval__;
        if( !isset($__error_get_last_retval__) ) {
            return null;
        }
        return $__error_get_last_retval__;
    }
}
?>
0 голосов
/ 01 июля 2011

Да, но вам придется заняться программированием, вам нужно прикрепить обработчик ошибок

$er_handler = set_error_handler("myErrorHandler");

, но перед этим вам нужно написать свой "myErrorHandler"

function myErrorHandler($errNumber, $errString, $errFile, $errLine)
{
  /*now add it to session so you can access it from anywhere, or if you have class with the static variable you can save it there */

 $_SESSION["Error.LastError"] = $errNumber . '<br>' . $errString . '<br>' . $errFile . '<br>' . $errLine;
  }

Теперь, когда произошла ошибка, вы можете получить ее

if(isset($_SESSION["Error.LastError"]))
  $str = $_SESSION["Error.LastError"];

сейчас, чтобы повторить ваш метод, вам нужно создать функцию

function get_last_error()
{
$str = "";
if(isset($_SESSION["Error.LastError"]))
      $str = $_SESSION["Error.LastError"];
return $str;
}
...