class Object {
public function getClass(){
return get_class($this);
}
public function __get($name){
$getterMethod='get'.$name;
if(method_exists($this,$getterMethod)){
return $this->$getterMethod();
}elseif(property_exists($this,$name)){
$backtrace=debug_backtrace();
trigger_error(
sprintf('Cannot access protected property %s::$%s in <b>%s</b> on line <b>%s</b>',$this->getClass(),$name,$backtrace[0]['file'],$backtrace[0]['line'])
, E_USER_ERROR);
}else{
$backtrace=debug_backtrace();
trigger_error(
sprintf('<b>Notice</b>: Undefined property: %s::$%s in <b>%s</b> on line <b>%s</b>',$this->getClass(),$name,$backtrace[0]['file'],$backtrace[0]['line'])
, E_USER_ERROR);
}
return NULL;
}
public function __set($name,$value){
$setterMethod='set'.$name;
if(method_exists($this,$setterMethod)){
$this->$setterMethod($value);
}elseif(property_exists($this,$name)){
$backtrace=debug_backtrace();
trigger_error(
sprintf('Cannot access protected property %s::$%s in <b>%s</b> on line <b>%s</b>',$this->getClass(),$name,$backtrace[0]['file'],$backtrace[0]['line'])
, E_USER_ERROR);
}else{
$backtrace=debug_backtrace();
trigger_error(
sprintf('<b>Notice</b>: Undefined property: <b>%s</b>::$<b>%s</b> in <b>%s</b> on line <b>%s</b>',$this->getClass(),$name,$backtrace[0]['file'],$backtrace[0]['line'])
, E_USER_ERROR);
}
}
}