Я относительно новичок в PHP, я пытаюсь сделать скрипт для регистрации ошибок из блоков try/catch. Я столкнулся с проблемой области, пытающейся это сделать.Можно ли вызвать метод экземпляра внутри класса без повторного создания экземпляра внутри области?
Во-первых, я попытался сделать экземпляр класса глобальной переменной, но это не сработало.
Я знаю, что каждый раз, когда вызывается «AnotherClass», можно создавать новый экземпляр; однако это позволит очистить массив «$ 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();
?>
Спасибо :)
Ohhhh !!!! Это так просто! Спасибо!!! – Patrick
Но НЕ ДОЛЖНО это сделать. Внесите обработчик ошибок в класс через конструктор или какой-либо другой метод. Кроме того, в этом конкретном случае вы должны использовать [set_error_handler] (http://php.net/manual/en/function.set-error-handler.php) – prodigitalson
Хорошо! Не думал бы об этом, но эта идея имеет смысл – Patrick