J'ai tiré une classe de Exception
, essentiellement comme ceci:accès variable privée de fonction membre en PHP
class MyException extends Exception {
private $_type;
public function type() {
return $this->_type; //line 74
}
public function __toString() {
include "sometemplate.php";
return "";
}
}
Puis, je tirais de MyException
comme ceci:
class SpecialException extends MyException {
private $_type = "superspecial";
}
Si je throw new SpecialException("bla")
de une fonction, l'attraper, et aller echo $e
, puis la fonction __toString
devrait charger un modèle, afficher cela, puis ne pas réellement retourner quoi que ce soit à l'écho.
Ceci est essentiellement ce qui est dans le fichier modèle
<div class="<?php echo $this->type(); ?>class">
<p> <?php echo $this->message; ?> </p>
</div>
dans mon esprit, cela devrait certainement travailler. Cependant, je reçois l'erreur suivante lorsqu'une exception est levée et je tente de l'afficher:
Erreur fatale: propriété privée Impossible d'accéder à SpecialException :: type $ _ dans C: \ chemin \ \ exceptions. php en ligne
quelqu'un peut-il expliquer pourquoi j'enfreint le règlement ici? Est-ce que je fais quelque chose d'horriblement spirituel avec ce code? Existe-t-il une façon beaucoup plus idiomatique de gérer cette situation? Le point de la variable $_type
est (comme indiqué) que je veux utiliser une classe div différente en fonction du type d'exception interceptée.
Comme je l'ai écrit là-bas: Il est très très très laid à faire __toString() renvoie une chaîne vide. Je ne peux vraiment pas voir n'importe quel usage pour de telles choses. – tuergeist
Le retour vide de __toString() pour une exception est encore plus douteux. – tuergeist