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() 返回的恢复数组。然后,它可以根据需要从该数组恢复对象的属性
public __toString ( void ) : string
__toString() 方法描述对象的字符串表示形式。例如,什么 echo $obj;将打印。该方法必须返回一个字符串
__invoke ([ $... ] ) : mixed
当脚本尝试将对象作为函数调用时,将调用此方法。
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() 用于从不可访问(受保护或私有)或不存在的属性中读取数据。
public __isset ( string $name ) : bool
__isset() 通过对不可访问(受保护或私有)或不存在的属性调用 isset() 或 empty() 来触发。
public __unset ( string $name ) : void
当 unset() 用于不可访问(受保护或私有)或不存在的属性时,会调用 __unset()。
WordPress中PHP文章标题如何传给JavaScript做请求参数?
Java和PHP中PKCS#7签名验签失败,尾部附加“AAAAAAAA==”字符串该如何解决?
Laravel-S框架下:HTTPS和WS正常,WSS却失败,问题出在哪?
在nginx中使用alias配置访问phpmyadmin项目时,如果遇到文件下载问题而不是正常显示网页内容,通常是因为nginx没有正确处理PHP文件。以下是可能的原因和解决方法:MIME类型配置错误: nginx可能将PHP文件的MIME类型配置为application/octet-stream,导致浏览器将文件视为下载而不是执行。这可以通过检查nginx配置文件中的location块来确认。location /phpmyadmin { alias /path/to/phpmyadmin;
DolphinPHP框架文件存储:为何用数字ID而非路径名,如何前台读取文件?
CMS 系统开发还有市场吗?