• __get __set 实例


    <?php
    class Person
    {
        //下面是人的成员属性,都是封装的私有成员
        private $name; //人的名子
        private $sex; //人的性别
        private $age; //人的年龄
        //__get()方法用来获取私有属性
        function __get($property_name)
        {
            echo "在直接获取私有属性值的时候,自动调用了这个__get()方法<br>";
            if(isset($this->$property_name))
            {
                return($this->$property_name);
            }
            else
            {
                return 220;
            }
        }
        //__set()方法用来设置私有属性
        function __set($property_name, $value)
        {
            echo "在直接设置私有属性值的时候,自动调用了这个__set()方法为私有属性赋值<br>";
            $this->$property_name = $value;
        }
    }
    $p1=new Person();
    //直接为私有属性赋值的操作,会自动调用__set()方法进行赋值
    $p1->name="张三";
    $p1->sex="男";
    $p1->age=20;
    //直接获取私有属性的值,会自动调用__get()方法,返回成员属性的值
    echo "姓名:".$p1->name."<br>";
    echo "性别:".$p1->sex."<br>";
    echo "年龄:".$p1->age."<br>";
    echo "年龄2:".$p1->msp."<br>";
    
    
    
    <?php
    error_reporting(E_ALL);
    class stu{
        private $a;
        private $b = 0;
        public $c;
        public $d = 0;
    
        //这里的 private 可以用 protected public 替代
        private function __get($name) {
            return 123;
        }
    
        //这里的 private 也可以用 protected public 替代
        private function __set($name, $value) {
            echo "This is set function";
        }
    }
     
    $s = new stu();
     
    var_dump($s->a);  //output: 123
    var_dump($s->b);  //output: 123
    var_dump($s->c);  //output: null
    var_dump($s->d);  //output: 0
    var_dump($s->e);  //output: 123
     
    $s->a = 3;   //output: This is set function
    $s->c = 3;  //no output
    $s->f = 3;  //output: This is set function
    ?>
    
    ?>
  • 相关阅读:
    [转] 关于hibernate的缓存使用
    周鸿祎,我的互联网方法论
    cwRsync window下的跨服务器的文件同步
    一个代价11万的bug
    批处理备份
    NodeJs环境部署
    spring接收参数
    @Autowired
    谈谈把网站迁移到阿里云的一些感想和其中遇到的一些问题
    HTML5+JS 《五子飞》游戏实现(一)规则
  • 原文地址:https://www.cnblogs.com/jiufen/p/4989125.html
Copyright © 2020-2023  润新知