标签 __get 下的文章

2015
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);
查看全文 >
微信扫一扫