PHP 魔法方法
简介
PHP 中的魔法方法是用于执行特定任务的特殊方法。这些方法以双下划线 (__) 作为前缀命名。所有这些函数名都是保留的,除了相关的魔法功能外,不能用于任何其他用途。类中的魔法方法必须声明为 public。这些方法充当拦截器,在满足特定条件时自动调用。
PHP 目前提供以下魔法方法
__sleep
public __sleep ( void ) : array
类中的 serialize() 方法会检查其是否具有名为 __sleep() 的函数。如果是,则在任何序列化之前执行该函数。它应该返回一个数组,其中包含该对象中所有需要序列化的变量的名称。
__wakeup
public __wakeup ( void ) : void
unserialize() 方法会检查是否存在名为 __wakeup() 的函数。如果存在,该函数可以重建对象可能拥有的任何资源。
__serialize
public __serialize ( void ) : array
serialize() 方法还会检查类是否具有 __serialize() 方法。如果存在,则会在任何序列化之前执行该方法。它必须构造并返回一个由键/值对组成的关联数组,该数组表示对象的序列化形式。
__unserialize
public __unserialize ( array $data ) : void
unserialize() 还会检查 __unserialize() 是否存在,并将 __serialize() 返回的已恢复数组传递给它。然后,它可能会根据需要从该数组中恢复对象的属性。
__toString
public __toString ( void ) : string
__toString() 方法描述对象的字符串表示形式。例如,echo $obj; 将打印的内容。此方法必须返回一个字符串
__invoke
__invoke ([ $... ] ) : 混合
当脚本尝试将对象作为函数调用时,会调用此方法。
__set_state
static __set_state ( array $properties ) : object
此静态方法由 var_export() 导出的类调用。它接收一个参数,该参数是一个包含导出属性的数组,格式为 array('property' => value, ...)。
__debugInfo
__debugInfo ( void ) : array
执行 var_dump() 转储对象以获取应显示的属性时,会自动调用此方法。如果未定义,则将显示所有公共、受保护和私有属性。
__set
public __set ( string $name , mix $value ) : void
当向不可访问(受保护或私有)或不存在的属性写入数据时,会运行__set()。
__get
public __get ( string $name ) : mix
__get() 用于从不可访问(受保护或私有)或不存在的属性读取数据。
__isset
public __isset ( string $name ) : bool
在不可访问(受保护或私有属性(private)或不存在的属性。
__unset
public __unset ( string $name ) : void
当 unset() 用于不可访问的(受保护的或私有的)或不存在的属性时,会调用 __unset()。

