0

我对 PHP 比较陌生,我正在尝试制作一个脚本来记录来自 try/catch 块的错误。我在尝试这样做时遇到了范围问题。

首先,我试图使类实例成为全局变量,但没有奏效。

我知道每次调用“AnotherClass”时都可以创建一个新实例;但是,这将清除 'errorhandler' 中的 '$errors' 数组。

我已经在这个问题上停留了几个小时,任何帮助将不胜感激!

<?php

class errorhandler
{
    private $errors = [];
    function log($e = '')
    {
        print "Opps! An error occured: " . $e;
        array_push($this->errors, $e);
    }
}

# global $errorhandler; # Doesn't work...
$errorhandler = new errorhandler();

class AnotherClass
{
    function __construct()
    {
        try {
            $not_possible = 1/0;
        } catch (Exception $e) {
            $errorhandler->log($e); # Doesn't work
        }
    }
}

new AnotherClass();

?>

谢谢 :)

4

1 回答 1

0

您必须将全局$errorhandler变量导入本地范围:

class AnotherClass
{
    function __construct()
    {
        global $errorhandler;

        try {
            $not_possible = 1/0;
        } catch (Exception $e) {
            $errorhandler->log($e); # Doesn't work
        }
    }
}

PS 1/0也不例外,它是运行时错误。你不能用try/catch块抓住那些。

于 2013-08-05T01:52:15.510 回答