zoukankan      html  css  js  c++  java
  • PHP魔术方法GET与SET

    __set() is run when writing data to inaccessible properties.
    __get() is utilized for reading data from inaccessible properties. 

    代码示例:

    <?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
    ?> 

    结果分析:
    如果没有__get方法,执行 var_dump($s->a) var_dump($s->b) 会有致命的错误
    如果没有__get方法,执行 var_dump($s->e) 会有一个notice,提示没有定义属性 $e

    总结:
    1. 从一个难以访问的属性读取数据的时候 __get() 方法被调用
    2. 向一个难以访问的属性赋值的时候 __set() 方法被调用
    3. 难以访问包括:(1)私有属性,(2)没有初始化的属性
    4. __isset() __unset() 也类似 

  • 相关阅读:
    质因数分解
    P1939 【模板】矩阵加速(数列)
    UVALive
    Python操作MySQL:pymysql模块
    Mysql数据库基础
    Redis管道和发布订阅
    Redis常用操作
    Redis操作集合,有序集合
    Redis操作list
    Redis操作hash
  • 原文地址:https://www.cnblogs.com/ZJBEY/p/7225252.html
Copyright © 2011-2022 走看看