我有两个班级:
class Test {
public $name;
}
/*******/
class MyClass {
private $_test = NULL;
__get($name)
{
return $this->$name;
}
__set($name,$value)
{
$this->$name = $value;
}
}
当我想以这种方式使用它时:
$obj1 = new MyClass();
$obj1->_test = new Test();
$obj1->_test->name = 'Test!';
一切都好。但也有可能,有人可能会这样使用它:
$obj1 = new MyClass();
$obj1->_test->name = 'Test!';
然后我注意到“注意:间接修改重载属性MyClass :: $ _ test对/ not_important_path_here没有影响”。而是通知我想要抛出异常。怎么做?
答案 0 :(得分:4)
您正在寻找的是ErrorException
对象。
function exception_error_handler($no, $str, $file, $line ) { throw new ErrorException($str, 0, $no, $file, $line); }
set_error_handler("exception_error_handler");
答案 1 :(得分:0)
在__get()方法中检查$ _test是否是Test的一个实例。如果返回它,否则抛出异常__get()方法。