欢迎光临散文网 会员登陆 & 注册

PHP的十六个魔术方法

2022-07-24 13:47 作者:限量版范儿  | 我要投稿

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

PHP的十六个魔术方法的评论 (共 条)

分享到微博请遵守国家法律