zoukankan      html  css  js  c++  java
  • __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
    ?>
    
    ?>
  • 相关阅读:
    Js原型对象理解
    Garbage In Garbage Out
    JournalNode的作用
    SecondaryNameNode 的作用
    Hive Map数据长尾问题
    Hive基本操作
    Hadoop中NameNode的工作机制
    技术架构分析与架构分析
    Sqoop报错Caused by: com.mysql.jdbc.exceptions.jdbc4.MySQLTransactionRollbackException: Deadlock found when trying to get lock; try restarting transaction
    项目管理PMP相关
  • 原文地址:https://www.cnblogs.com/jiufen/p/4989125.html
Copyright © 2011-2022 走看看