php的魔术方法

__construct() 构造函数

__destruct() 析构函数

__call() 调用不存在的方法时调用

__callStatic()  静态函数里面调用不存在的方法时调用

__get() 对未定义的变量赋值时调用

__set() 读未定义的变量时调用

__isset() 对未定义的变量执行isset()时调用

__unset() 对未定义的变量执行unset()时调用

__toString() 允许以调用字符串的方法调用对象

__invoke()  允许以调用函数的方法调用对象

__set_state() 执行var_export返回的内容

__clone() 对象完全复制

使用情况:如果对象A中保存着对象B的引用,当你复制对象A时,你想其中使用的对象不再是对象B而是B的一个副本,那么 你必须得到对象A的一个副本。

__sleep() __wakeup()

serialize() 函数执行前会检查是否存在一个魔术方法 __sleep().如果存在,__sleep()方法会先被调用, 然后才执行序列化操作。这个功能可以用于清理对象,并返回一个包含对象中所有应被序列化的变量名称的数组。如果该方法不返回任何内容,则NULL被序列 化,并产生 一个E_NOTICE错误。 __sleep()方法常用于提交未提交的数据,或类似的清理操作。同时,如果你有一些很大的对象, 不需要全部保存,这个功能就很好用。

与之相反,unserialize()会检查是否存在一个__wakeup()方法。如果存在,则会先调用 __wakeup方法,预先准备对象需要的资源。__wakeup()经常用在反序列化操作中,例如重新建立数据库连接,或执行其它初始化操作

原文地址:https://www.cnblogs.com/xingmeng/p/2934870.html