• php5 中魔术方法函数有哪几个


    魔术函数:
    9.3 构造函数:__construct()
    9.3.1 实例化对象时被调用。
    9.3.2 在类中,构造函数是用来初始化对象的,利用构造函数,可以操作对象,并改变它的值。
    9.3.3 当__construct和以类名为函数名的函数同时存在时,__construct将被调用,另一个不被调用。
    9.3.4 当子类重写了构造函数,子类被实例化时,只调用子类的构造函数,而父类的构造函数不被调用。
    9.4 析构函数:__destruct()
    9.4.1 当删除一个对象或对象操作终止时被调用。
    9.4.2 当该对象的所有引用都被删除,或者对象被显式销毁时执行。
    9.5 克隆函数:__clone()
    9.5.1 当对象被拷贝(克隆)时直接调用。
    9.5.2 如$a = new Action(); $a = $object;
    9.6 __set($name, $value)
    9.6.1 用$object->a = 17的方式给属性赋值时,如果属性a存在且是public型,那么直接给属性a赋值皆可;
    9.6.2 如果属性a不存在或者是protected/private型,就会调用__set($name, $value)方法。
    9.6.3 二个参数:属性、属性值。
    9.7 __get($name)
    9.7.1 用$object->a的方式读取对象的属性时,如果属性a存在且是public型,那么直接返回该属性的值;
    9.7.2 如果属性a不存在或者是protected/private修饰的不可直接访问的类型,就会调该方法并以返回值为准。
    9.7.3 一般可以使用该方法使外部可限制性地访问内部属性,或者完成类似java中的反射操作。
    9.8 __isset($name)
    9.8.1 检测一个对象的属性是否存在时被调用。
    9.8.2 如:isset($c->name),如果name不存在,则触发该函数。
    9.8.3 对不存在或者不可访问的属性使用isset()或者empty()时,__isset()会被调用。
    9.9 __unset($name)
    9.9.1 销毁一个对象的属性时被调用。
    9.9.2 如:unset($c->name),如果name不存在,则触发该函数。
    9.9.3 当unset一个不存在或者不可访问的属性时,__unset()会被调用,否则直接unset该属性皆可。
    9.10 __call($name, $arguments)
    9.10.1 当调用不存在或者不可访问的方法时,会调用__call($name, $arguments)方法。
    9.11 __callStatic($name, $arguments)
    9.11.1 当在静态方法中调用不存在或者不可访问的方法时,会调用__callStatic($name, $arguments)方法。
    9.11.2 这个方法 是PHP5.3里才添加的,比较新。
    9.12 __toString()
    9.12.1 当打印对象时会被直接调用。如 echo $object; 或 print $obj;
    9.12.2 注意:这时候php会抛出一个Catchable fatal error错误;用print_r打印对象不会触发此函数。
    9.13 __set_state()
    9.13.1 用var_export()输出一个对象时,__set_state()会被调用,输出内容以该魔术方法的返回值为准。
    9.13.2 注:var_export()和var_dump()类似,只是var_export()输出的内容符合php语法。
    9.14 __autoload($name)
    9.14.1 实例化一个对象时,如果对应的类不存在,则该方法被调用。
    9.14.2 这个函数比较特殊,这个函数并不是作为类的成员方法使用的。
    9.14.3 注意:该方法是全局函数,参数是类的名称。
    9.14.4 可以用spl_autoload_register函数来定义其他的函数来代替__autoload
    9.15 __sleep()
    9.15.1 serialize之前被调用。若对象比较大,想删减一点东东再序列化,可考虑一下此函数。
    9.16 __wakeup()
    9.16.1 unserialize时被调用,做些对象的初始化工作。

  • 相关阅读:
    微信公众号开发:3、自定义菜单
    微信公众号开发:2、消息处理
    微信公众号开发:1、服务器配置
    基于.NetCore3.1系列 —— 日志记录之初识Serilog
    基于.NetCore3.1系列 —— 日志记录之日志核心要素揭秘
    基于.NetCore3.1系列 —— 日志记录之自定义日志组件
    基于.NetCore3.1系列 —— 日志记录之日志配置揭秘
    基于.NetCore3.1系列 —— 使用Swagger导出文档 (番外篇)
    基于.NetCore3.1系列 —— 使用Swagger导出文档 (补充篇)
    基于.NetCore3.1系列 —— 使用Swagger做Api文档 (下篇)
  • 原文地址:https://www.cnblogs.com/haoyu521/p/5623103.html
Copyright © 2020-2023  润新知