PHP魔术方法

2023年11月21日09:59:26

介绍

PHP中的魔术方法是旨在执行某些任务的特殊方法。这些方法以双下划线(__)作为前缀命名。所有这些函数名称均已保留,除关联的神奇功能外,不能用于任何其他目的。类中的魔术方法必须声明为public。这些方法充当拦截器,当满足某些条件时会自动调用这些方法。

当前在PHP中可以使用以下神奇方法

__睡觉

public __sleep ( void ) : array

类中的serialize()方法检查它是否具有函数名称__sleep()。如果是这样,则该功能在任何序列化之前执行。应该返回一个数组,其中包含该对象应被序列化的所有变量的名称。

__醒来

public __wakeup ( void ) : void

unserialize()方法检查是否存在一个具有魔术名称__wakeup()的函数。如果存在,此功能可以重建对象可能具有的任何资源。

__连载

public __serialize ( void ) : array

serialize()方法还会检查类是否具有__serialize()方法。如果是这样,它将在任何序列化之前执行。它必须构造并返回代表对象序列化形式的键/值对的关联数组。

__反序列化

public __unserialize ( array $data ) : void

unserialize()还会检查是否存在__unserialize(),它将传递从__serialize()返回的还原数组。然后,它可以根据需要从该数组还原对象的属性。

__toString

public __toString ( void ) : string

__toString()方法描述对象的字符串表示形式。例如,echo $obj; 将打印。此方法必须返回一个字符串

__调用

__invoke ([ $... ] ) : mixed

当脚本尝试将对象作为函数调用时,将调用此方法。

__set_state

static __set_state ( array $properties ) : object

对于由var_export()导出的类,将调用此静态方法。它接收一个参数,该参数是一个包含以array('property'=> value,...)形式导出的属性的数组。

__调试信息

__debugInfo ( void ) : array

当执行var_dump()来转储对象以获取应显示的属性时,将自动调用此方法。如果未定义,则将显示所有公共,受保护和私有属性。

__组

public __set ( string $name , mixed $value ) : void

将数据写入不可访问的(受保护的或私有的)或不存在的属性时,将运行__set()。

__得到

public __get ( string $name ) : mixed

__get()用于从不可访问的(受保护的或私有的)或不存在的属性中读取数据。

__isset

public __isset ( string $name ) : bool

__isset()通过调用isset()empty()访问不可访问(受保护或私有)或不存在的属性来触发。

__未设置

public __unset ( string $name ) : void

unset()在无法访问的(受保护的或私有的)或不存在的属性上使用__unset()时,将调用__unset()。


  • 更新时间:2023年11月21日09:59:26 ,共 1395 字。