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() 也类似 

  • 相关阅读:
    ajax
    ASP.net(c#)返回上一页效果(后退)代码
    审批时进行判断
    indexOf(String.indexOf 方法)判断标签是否存在
    不用代码隐藏自定义列表
    列表显示隐藏
    jq加载页面跳转指定的页面
    sharepoint2013部件保存后停留在保存页面
    Perl学习之四:语句(续)
    Perl学习之四:语句
  • 原文地址:https://www.cnblogs.com/ZJBEY/p/7225252.html
Copyright © 2011-2022 走看看