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时被调用,做些对象的初始化工作。

posted @ 2016-06-28 13:33  心浩宇  阅读(349)  评论(0编辑  收藏  举报