专注于WEB技术的IT博客

php面向对象编程之__get()

时间:2013-03-29分类: php浏览:3420
分享到:

在php面向对象编程中,类的成员属性被private封装后,如果试图在外面调用它则会出现“不能访问某个私有属性”的错误。为了解决这个问题,我们可以使用魔术方法”__get()“。


魔术方法__get()的作用

在程序运行过程中,通过它可以在对象的外部获取私有成员属性的值。

我们来看一个关于__get()的实例。

<?php
    class Person  {          
        private $name;
        private $age;
            function __construct($name="", $age=1) {   
            $this->name = $name;
            $this->age = $age;
        }
        //在类中添加__get()方法,在直接获取属性值时自动调用一次,以属性名作为参数传入并处理
        private function __get($propertyName)  {    //在方法前使用private修饰,防止对象外部调用
             if($propertyName=="age") {
                if($this->age > 30)
                    return $this->age-10;
                else
                    return $this->$propertyName;
             } else {
                return $this->$propertyName;
             }
        }
    }
    $Person=new Person("张三", 40);   //通过Person类实例化的对象,并通过构造方法为属性赋初值
    echo "姓名:".$Person->name."<br>";   //直接访问私有属性name,自动调用了__get()方法可以间接获取
    echo "年龄:".$Person->age."<br>";    //自动调用了__get()方法,根据对象本身的情况会返回不同的值
?>

在上面的程序中, __get方法对$age属性作了限制,如果对象中年龄大于30刚则隐瞒了10岁,否则返回真实年龄。


  


猜你喜欢
php面向对象之__autoload()
php面向对象之__call处理错误调用
php面向对象之__toString()
PHP面向对象之const常量修饰符
php面向对象之final的应用
php面向对象之克隆对象
PHP面向对象之对象和引用
php面向对象之类的静态成员
php面向对象之子类中重载父类的方法
php面向对象的访问类型控制
标签 : php 面向对象
除非注明,本文首发网志博客,欢迎转载!转载请注明本文地址:http://w3note.com/web/96.html,谢谢。
  • 评论
  • 赞助本站