2015
09-03
09-03
PHP魔术方法之__set()和__get()
先来看一段代码:
class Article{
//私有成员属性
private $title = '标题';
//受保护的成员属性
protected $author = '作者';
//公有成员属性
public $introduce = '简介';
}
$article = new Article();
var_dump($article -> title);
var_dump($article -> author);
var_dump($article -> introduce);
对象直接访问类中的private和protected成员属性时,会报一个Fatal error的错误,提示“Cannot access private property”或者“Cannot access protected property”。
1、魔术方法__get()
如果对象要直接访问类中的private和protected成员属性呢?
PHP给我们提供了一个魔术方法“__get()”,用于获取private和protected成员属性。
class Article{
//私有成员属性
private $title = '标题';
//受保护的成员属性
protected $author = '作者';
//公有成员属性
public $introduce = '简介';
//获取private和protected成员属性
public function __get($name){·
if(isset($this -> $name)) {
return $this->$name;
}
return false;
}
}
$article = new Article();
var_dump($article -> title);
var_dump($article -> author);
var_dump($article -> introduce);