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: 234
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