我对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();
?>
谢谢:)
答案 0 :(得分:0)
您必须将全局$errorhandler
变量导入本地范围:
class AnotherClass
{
function __construct()
{
global $errorhandler;
try {
$not_possible = 1/0;
} catch (Exception $e) {
$errorhandler->log($e); # Doesn't work
}
}
}
P.S。 1/0
不是例外,它是运行时错误。你无法抓住那些try
/ catch
阻止的人。