Я получил класс от Exception
, в основном так:
class MyException extends Exception {
private $_type;
public function type() {
return $this->_type; //line 74
}
public function __toString() {
include "sometemplate.php";
return "";
}
}
Тогда я получил из MyException
так:
class SpecialException extends MyException {
private $_type = "superspecial";
}
Если я throw new SpecialException("bla")
от функции, поймайте ее и перейдите echo $e
, тогда функция __toString
должна загрузить шаблон, отобразить это, а затем фактически не вернуть ничего для эха.
Это в основном то, что в файле шаблона
<div class="<?php echo $this->type(); ?>class">
<p> <?php echo $this->message; ?> </p>
</div>
на мой взгляд, это определенно должно работать. Тем не менее, я получаю следующую ошибку, когда генерируется исключение, и я пытаюсь его отобразить:
Неустранимая ошибка: не удается получить доступ к частной собственности SpecialException:: $_ введите C:\path\to\exceptions.php в строке 74
Может кто-нибудь объяснить, почему я нарушаю правила здесь? Я делаю что-то ужасно острое с этим кодом? Есть ли более идиоматический способ справиться с этой ситуацией? Точка переменной $_type
(как показано), что я хочу использовать другой класс div в зависимости от типа исключения.