l'accès privé de la variable de la fonction membre en PHP

J'ai dérivé d'une classe de Exception, essentiellement comme suit:

class MyException extends Exception {

    private $_type;

    public function type() {
        return $this->_type; //line 74
    }

    public function __toString() {

        include "sometemplate.php";
        return "";

    }

}

Ensuite, j'ai tiré de MyException comme suit:

class SpecialException extends MyException {

    private $_type = "superspecial";

}

Si je throw new SpecialException("bla") à partir d'une fonction, l'attraper, et aller echo $e, puis le __toString fonction doit charger un modèle, d'affichage, et ensuite, de ne pas renvoyer en fait rien à l'écho.

C'est ce qui est en gros dans le fichier de modèle

<div class="<?php echo $this->type(); ?>class">

    <p> <?php echo $this->message; ?> </p>

</div>

dans mon esprit, cela devrait fonctionner. Cependant, j'obtiens l'erreur suivante lorsqu'une exception est levée et j'essaie de l'afficher:

Erreur fatale: Impossible d'accéder à la propriété privée SpecialException::$_type dans C:\path\to\exceptions.php sur la ligne 74

Quelqu'un peut-il expliquer pourquoi suis-je enfreindre les règles ici? Suis-je en train de faire quelque chose de terriblement d'esprit avec ce code? Est-il beaucoup plus idiomatiques façon de gérer cette situation? Le point de la $_type variable (comme montré) que je veux un autre div class être utilisées, selon le type de l'exception interceptée.

Comme je l'ai écrit là-bas: Il est très très très moche de laisser __toString() renvoie une chaîne vide. Vraiment, je vois pas de cas d'utilisation pour ce genre de chose.
Le retour à vide de l' __toString (), une Exception est encore plus douteux.

OriginalL'auteur Carson Myers | 2009-11-19