• __get(),__set(),__isset(),__unset()


    __get(),__set(),__isset(),__unset()

    在给不可访问属性赋值时,__set()会被调用
    读取不可访问属性的值时,__get()会被调用

    当对不可访问属性调用isset()或empty()时,__isset()会被调用
    当对不可访问属性调用unset()时,__unset()会被调用

    所谓不可访问属性,实际上就是在调用某个属性时发现这个属性没有被定义,这时候不同的操纵会触发不同的魔术方法

    这几个方法也被称为属性重载的魔术方法

     1 <?php
     2 class MagicTest{
     3     public function __get($name) {
     4         return "Getting the property ".$name."<br/>";
     5     }
     6     public function __set($name,$value) {
     7         echo "setting the property ".$name." to value ".$value."<br/>";
     8     }
     9     public function __isset($name) {
    10         echo "__isset invoke"."<br/>";
    11         return true;
    12     }
    13     public function __unset($name) {
    14         echo "unsetting property ".$name;
    15     }
    16 }
    17 
    18 $obj = new MagicTest();
    19 echo $obj->classname;
    20 $obj->className="MagicClassX";
    21 echo '$obj->ClassName is set?'.isset($obj->className)."<br/>";
    22 echo '$obj->className is empty?'.empty($obj->className)."<br/>";
    23 unset($obj->className);

    输出为:

    Getting the property classname
    setting the property className to value MagicClassX
    __isset invoke
    $obj->ClassName is set?1
    __isset invoke
    $obj->className is empty?
    unsetting property className
  • 相关阅读:
    给花花看的链接
    Arguments Optional闭包
    对闭包最好的解释
    Everything Be True判断对象是否存在指定的属性且有值
    Binary Agents将二进制句子翻译成英文
    伤情鉴定和伤残鉴定
    Steamroller 数组扁平化处理
    Drop it
    2021年flag-300+道算法~~~
    微服务之玉麟宝典,呕心沥血的日常
  • 原文地址:https://www.cnblogs.com/jacson/p/4620774.html
Copyright © 2020-2023  润新知