accessing private variable from member function in PHP
        Posted  
        
            by Carson Myers
        on Stack Overflow
        
        See other posts from Stack Overflow
        
            or by Carson Myers
        
        
        
        Published on 2009-11-19T09:53:19Z
        Indexed on 
            2010/03/15
            15:59 UTC
        
        
        Read the original article
        Hit count: 302
        
I have derived a class from Exception, basically like so:
class MyException extends Exception {
    private $_type;
    public function type() {
    	return $this->_type; //line 74
    }
    public function __toString() {
        include "sometemplate.php";
        return "";
    }
}
Then, I derived from MyException like so:
class SpecialException extends MyException {
    private $_type = "superspecial";
}
If I throw new SpecialException("bla") from a function, catch it, and go echo $e, then the __toString function should load a template, display that, and then not actually return anything to echo.
This is basically what's in the template file
<div class="<?php echo $this->type(); ?>class">
    <p> <?php echo $this->message; ?> </p>
</div>
in my mind, this should definitely work. However, I get the following error when an exception is thrown and I try to display it:
Fatal error: Cannot access private property SpecialException::$_type in C:\path\to\exceptions.php on line 74
Can anyone explain why I am breaking the rules here? Am I doing something horribly witty with this code? Is there a much more idiomatic way to handle this situation? The point of the $_type variable is (as shown) that I want a different div class to be used depending on the type of exception caught.
© Stack Overflow or respective owner