扫二维码与项目经理沟通
我们在微信上24小时期待你的声音
解答本文疑问/技术咨询/运营咨询/技术建议/互联网交流
这篇文章给大家分享的是有关php中类魔术方法是什么的内容。小编觉得挺实用的,因此分享给大家做个参考。一起跟随小编过来看看吧。
成都创新互联专注于企业成都全网营销、网站重做改版、修文网站定制设计、自适应品牌网站建设、H5场景定制、成都商城网站开发、集团公司官网建设、成都外贸网站建设公司、高端网站制作、响应式网页设计等建站业务,价格优惠性价比高,为修文等各大城市提供网站开发制作服务。php中的类魔术方法有:1、__sleep,返回一个包含对象中所有应被序列化的变量名称的数组;2、__tostring,返回一个类被当作字符串时要输出的内容;3、__construct,构造方法;4、__destruct,析构方法。
在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中类魔术方法是什么就分享到这里了,希望以上内容可以对大家有一定的帮助,让大家可以学到更多知识。如果觉得文章不错,可以把它分享出去让更多的人看到吧!
我们在微信上24小时期待你的声音
解答本文疑问/技术咨询/运营咨询/技术建议/互联网交流