您的位置:首页 > 编程语言 > PHP开发

php __set() __get() 方法访问属性

2015-10-03 15:26 639 查看
<?php
header("Content-type:text/html;charset=utf-8");
class Obj{
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);
}
}
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);
}
}
}
class person extends Obj{

private $name;
private $age;
private $address;
/**
* @return the $name
*/
public function getName()
{
return $this->name;
}

/**
* @return the $age
*/
public function getAge()
{
return $this->age;
}

/**
* @return the $address
*/
public function getAddress()
{
return $this->address;
}

/**
* @param field_type $name
*/
public function setName($name)
{
$this->name = $name;
}

/**
* @param field_type $age
*/
public function setAge($age)
{
$this->age = $age;
}

/**
* @param field_type $address
*/
public function setAddress($address)
{
$this->address = $address;
}

}

$p = new person();
$p->name = '王宝强';
echo "value:",$p->name;


__set() __get()
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: