php中的__set,__get

Author Avatar
yyq 2020-07-29 15:06:44
  • 二维码

php中的__set,__get用法

        __set,php中类的对象成员设置函数,该方法是用来设置私有属性,给一个未定义的属性赋值时会调用该方法;

        

        NO1:声明设置时的方式

        function __set($property, $value){

              方法体  //一般用来进行赋值并可以判断值的非法性

        }

        参数$property是属性名,$value 为属性名对应的值


        NO2:使用方法

        a:定义一个对象如下:

            $demo_obj = new Demo('张三',‘20’);


        b:更改对象属性值,将姓名 张三 替换为李四

            $demo_obj->name = '李四';

        此时会自动调用__set()方法,当没有__set()方法,将会报错;



        __get(),获得一个类成员变量时调用。当类的成员被定义为private,我们在程序运行时,通过它可以在对象外部获取私有成员的属性值

    

        NO1:声明设置时的方式

        function __get($property){

              方法体  //一般用来私有对象成员值

        }

        参数$property是属性名


        NO2:使用方法

        a:类Demo中定义私有成员变量,并定义构造函数

            private $ua;

            private $ub;

            function __construct($ua, $ub){

                $this->ua = $ua;

                $this->ub = $ub;

            }

        b:实例化对象,并赋值

            $test_obj = new Demo('aa', 'bb');


        c:定义__get()函数获取私有成员值

            function __get($property){

                if($property == 'ua') return $this->ua;

                else if($property == 'ub') return $this->ub;

            }

        

        d:直接访问私有属性ua或ub,将自动调用__get()方法,根据对象本身情况返回不同值

            echo "Ua = ".$test_obj->ua;

            echo "Ub = ".$test_obj->ub;

            

            执行后返回:Ua = aa Ub=bb

            

上一篇 返回列表 下一篇

发表评论

Tips:评论内容请文明用语