首页 > 文章列表 > PHP魔术方法

PHP魔术方法

php 魔术方法 编程关键词
238 2023-09-10

简介

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 ([ $... ] ) : mixed

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

__set_state

static __set_state ( array $properties ) : object

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

__debugInfo

__debugInfo ( void ) : array

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

__set

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

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

__get

public __get ( string $name ) : mixed

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

__isset

public __isset ( string $name ) : bool

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

__unset

public __unset ( string $name ) : void

当 unset() 用于不可访问(受保护或私有)或不存在的属性时,会调用 __unset()。