JavaBan中的通过get,set方式获取/设置属性值,同时在jstl可以通过对象名.属性名的方式读取属性值。如果想在php中实现前述功能如何处理呢。php需要通过__get和__set两个魔术方法实现java中的get,set方法
/**
* 通过魔术方法实现javabean的get方法
* @param $name 参数名
* @return mixed 自动调用对应的方法名
*/
public function __get($name){
$getter = 'get'.ucfirst($name);
if (method_exists($this, $getter)) {
return $this->$getter();
}elseif (method_exists($this, 'set'.$name)){
throw new Exception('read-only property:'.$name);
}else{
throw new Exception('unknown property:'.$name);
}
}
/**
* 通过魔术方法实现javabean的set方法
* @param $name 参数名
* @param $value 参数值
*/
public function __set($name, $value){
$setter = 'set'.ucfirst($name);
if (method_exists($this, $setter)) {
$this->$setter($value);
}elseif (method_exists($this, 'get'.$name)){
throw new Exception('write-only property:'.$name);
}else {
throw new Exception('unknown property:'.$name);
}
}