PHP的十六个魔术方法
PHP中把以两个下划线__开头的方法称为魔术方法(Magic methods),这些方法在PHP中充当了举足轻重的作用。
魔术方法是一种特殊的方法,当对对象执行某些操作时会覆盖 PHP 的默认操作。
注意:
PHP 保留所有以 __ 开头的方法名称。 因此,除非覆盖 PHP 的行为,否则不建议使用此类方法名称。
下列方法名被认为是魔术方法:
__construct() 、 __destruct() 、 __call() 、 __callStatic() 、 __get() 、 __set() 、 __isset() 、 __unset() 、 __sleep() 、 __wakeup() 、 __serialize() 、 __unserialize() 、 __toString() 、 __invoke() 、 __set_state() 、 __clone() 、 __debugInfo() 。
注意:
除了 __construct(), __destruct() ,和 __clone() 之外的所有魔术方法都 必须 声明为 public, 否则会发出 E_WARNING。
在 PHP 8.0.0 之前没有为魔术方法 __sleep() 、 __wakeup() 、 __serialize() 、 __unserialize() 、 __set_state() 发出诊断信息。
注意:
如果定义魔术方法时使用类型声明,它们必须与本文档中描述的签名相同,否则会发出致命错误。 在 PHP 8.0.0 之前,不会发出诊断信息。 然而, __construct() 和 __destruct() 不能声明返回类型, 否则会发出致命错误。
魔术方法包括:
1. __construct(),类的构造函数
2. __destruct(),类的析构函数
3. __call(),在对象中调用一个不可访问方法时调用
4. __callStatic(),用静态方式中调用一个不可访问方法时调用
5. __get(),获得一个类的成员变量时调用
6. __set(),设置一个类的成员变量时调用
7. __isset(),当对不可访问属性调用isset()或empty()时调用
8. __unset(),当对不可访问属性调用unset()时被调用。
9. __sleep(),执行serialize()时,先会调用这个函数
10. __wakeup(),执行unserialize()时,先会调用这个函数
11. __toString(),类被当成字符串时的回应方法
12. __invoke(),调用函数的方式调用一个对象时的回应方法
13. __set_state(),调用var_export()导出类时,此静态方法会被调用。
14. __clone(),当对象复制完成时调用
15. __autoload(),尝试加载未定义的类
16. __debugInfo(),打印所需调试信息
原文链接:https://www.dianjilingqu.com/441165.html