视频1 视频21 视频41 视频61 视频文章1 视频文章21 视频文章41 视频文章61 推荐1 推荐3 推荐5 推荐7 推荐9 推荐11 推荐13 推荐15 推荐17 推荐19 推荐21 推荐23 推荐25 推荐27 推荐29 推荐31 推荐33 推荐35 推荐37 推荐39 推荐41 推荐43 推荐45 推荐47 推荐49 关键词1 关键词101 关键词201 关键词301 关键词401 关键词501 关键词601 关键词701 关键词801 关键词901 关键词1001 关键词1101 关键词1201 关键词1301 关键词1401 关键词1501 关键词1601 关键词1701 关键词1801 关键词1901 视频扩展1 视频扩展6 视频扩展11 视频扩展16 文章1 文章201 文章401 文章601 文章801 文章1001 资讯1 资讯501 资讯1001 资讯1501 标签1 标签501 标签1001 关键词1 关键词501 关键词1001 关键词1501 专题2001
php中的类魔术方法有哪些
2020-11-02 18:27:14 责编:小采
文档


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:对象复制。

下载本文
显示全文
专题