PHP 13 个常用魔术方法:
__construct、__destruct、__call 或 __callStatic、__get、__set、__isset、__unset、__toString、__clone、__autoload、__invoke、__sleep、__wakeup
1、__construct 构造方法
__construct构造方法,当一个类被实例化创建对象时,会调用构造方法。
2、__destruct 构造方法
__destruct析构方法, 当对象在销毁之前或失去对对象的引用时,会调用 析构方法。
3、__call 或 __callStatic
- 当调用一个未定义的或没有权限的成员方法时,会调用
__call方法。(当在静态方法中调用一个未定义的或没有权限的成员方法时,则会调用__callStatic方法。)- 如果本类找不到调用的成员方法,会去父类中找。
- 如果本类找不到
__call方法,会去父类中找。
4、__get
当调用一个未定义的或非公有的成员属性时,会调用
__get方法。
5、__set
当给一个未定义的或非公有的成员属性赋值时, 会调用
__set方法。
6、__isset
当在一个未定义的或非公有的成员属性上调用
isset函数时,会调用__isset方法。
7、__unset
当在一个未定义或非公有的成员属性上调用
unset函数时,会调用__unset方法。
8、 __toString
在打印输出一个对象时, 会自动调用
__toString方法。 例:echo 对象名。
9、__clone
当克隆一个对象时, 会自动调用
__clone方法。 例:$clone_obj = clone 对象名;
10、__autoload
在实例化一个尚未被定义的类时会自动调用
__autoload来加载类文件。
11、__invoke
当尝试以调用函数的方式调用一个对象时, 会自动调用
__invoke方法。
12、__sleep
serialize()函数会检查类中是否存在__sleep方法,如果存在,先执行__sleep方法,再执行 序列化操作。<?php class User { public function __sleep(){ // } } $obj = new User(); serialize($obj);
13、__wakeup
unserialize()函数会检查类中是否存在__wakeup方法,如果存在,先执行__wakeup方法,再执行 反序列化操作。<?php class User { public function __wakeup(){ // } } $obj = new User(); unserialize($obj);
PHP魔术方法详解,
PHP的魔术方法包括构造方法__construct、析构方法__destruct、动态调用方法__call和__callStatic、访问属性方法__get和__set、检查属性__isset和__unset、对象转换为字符串__toString、克隆对象__clone、自动加载类__autoload、可调用对象__invoke以及序列化和反序列化方法__sleep和__wakeup。这些方法在特定情况下自动触发,扩展了PHP对象的行为。
1924

被折叠的 条评论
为什么被折叠?



