温馨提示×

温馨提示×

您好,登录后才能下订单哦!

密码登录×
登录注册×
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》

php中类魔术方法是什么

发布时间:2020-08-21 14:04:00 来源:亿速云 阅读:125 作者:小新 栏目:编程语言

这篇文章给大家分享的是有关php中类魔术方法是什么的内容。小编觉得挺实用的,因此分享给大家做个参考。一起跟随小编过来看看吧。

php中的类魔术方法有:1、__sleep,返回一个包含对象中所有应被序列化的变量名称的数组;2、__tostring,返回一个类被当作字符串时要输出的内容;3、__construct,构造方法;4、__destruct,析构方法。

php中类魔术方法是什么

在PHP中将所有以双下划线(__)开头的类方法保留为魔术方法。

下面我们来看看都有哪些魔术方法:

1、__sleep:返回一个包含对象中所有应被序列化的变量名称的数组。

serialize函数在序列化类时首先会检查类中是否存在__sleep方法。如果存在,会先调用此方法然后再执行序列化操作,并且只对__sleep返回的数组中的属性进行序列化。如果__sleep不返回任何内容,则null会被序列化,并产生E_NOTICE级别的错误。

__sleep不能返回父类的私有成员,否则会产生E_NOTICE级别的错误。对于一些很大但不需要保存全部数据的对象此方法很有用。

2、__wakeup:与__sleep相反,是在unserialize函数反序列化时首先会检查类中是否存在__wakeup方法,如果存在会先调用次方法然后再执行反序列化操作。用于在反序列化之前准备一些对象需要的资源,或其他初始化操作。

3、__tostring:返回一个类被当做字符串时要输出的内容,此方法必须返回字符串并且不能在此方法中抛出异常,否则会产生致命错误。

在PHP5.2之前此方法只有在直接使用echo和print时才生效,之后则可以在任何字符串环境生效,如果将一个未定义__toString方法的对象转换为字符串,会产生致命错误。

(视频教程推荐:php视频教程)

4、__invoke:PHP5.3起,当尝试以函数的方式调用对象时,会调用此方法。

5、__set_state:PHP5.1起,当调用var_export函数导出类时,会调用此静态方法。此方法只有一个参数,是一个包含按属性为键,属性值为值的数组。此方法可以用来控制哪些成员可以被导出。

6、__debugInfo:PHP5.6起,当调用var_dump函数打印对象的属性时会调用此方法,此方法可以用来控制哪些属性可以被打印,如果没有定义此方法,则对象中所有的public、protected、private的属性都会被打印。返回一个包含可以被打印的属性的数组。

7、__construct:构造函数。

8、__destruct:析构函数。

9、__set、__get、__isset、__unset:重载属性。

10、__call、__callstatic:重载方法。

11、__clone:对象复制。

感谢各位的阅读!关于php中类魔术方法是什么就分享到这里了,希望以上内容可以对大家有一定的帮助,让大家可以学到更多知识。如果觉得文章不错,可以把它分享出去让更多的人看到吧!

向AI问一下细节

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

AI