PHP中魔术方法

2019-02-15 11:07:29 3559

PHP 将所有以 __(两个下划线)开头的类方法保留为魔术方法(Magic methods)。

__construct(),类的构造函数

__destruct(),类的析构函数

__call(),在对象中调用一个不可访问方法时调用

__callStatic(),用静态方式中调用一个不可访问方法时调用

__get(),解决类的成员属性被设定为 private 后,如果我们试图在外面调用它则会出现“不能访问某个私有属性”的错误。

__set(),来设置私有属性, 给一个未定义的属性赋值时,此方法会被触发,传递的参数是被设置的属性名和值。

__isset(),当类外部对不可访问属性调用isset()或empty()时调用

__unset(),当类外部对不可访问属性调用unset()时被调用。

__sleep(),执行serialize()时,先会调用这个函数

__wakeup(),执行unserialize()时,先会调用这个函数

__toString(),类被当成字符串时的回应方法

__invoke(),调用函数的方式调用一个对象时的回应方法

__set_state(),调用var_export()导出类时,此静态方法会被调用,本方法的唯一参数是一个数组,其中包含按 array('property' => value, ...) 格式排列的类属性。。

__clone(),对象被复制后,PHP 5 会对对象的所有属性执行一个浅复制(shallow copy)。所有的引用属性 仍然会是一个指向原来的变量的引用。当对象复制完成时调用该方法可用于修改属性的值(如果有必要的话)。

__autoload(),尝试加载未定义的类,这个类会在你实例化对象之前自动加载制定的文件。

__debugInfo(),在转储对象以获取应显示的属性时, 此方法由var_dump()调用,如果该方法未在对象上定义,则将显示所有公共,受保护和私有属性。


提交成功!非常感谢您的反馈,我们会继续努力做到更好!

这条文档是否有帮助解决问题?

非常抱歉未能帮助到您。为了给您提供更好的服务,我们很需要您进一步的反馈信息:

在文档使用中是否遇到以下问题: