当前位置:首页 > Web开发 > 正文

8、__sleep、__wakeup __sleep 串行化的时候用 __wakeup 反串行化的时候调用 seria

2024-03-31 Web开发

这两个要领是为在类和他们的父类中没有声明的属性而设计的

__get( $property )       当挪用一个不决义的属性时访谒此要领
__set( $property, $value )    给一个不决义的属性赋值时挪用
这里的没有声明包孕访谒控制为proteced,private的属性(即没有权限访谒的属性)

2、__isset、__unset

__isset( $property ) 当在一个不决义的属性上挪用isset()函数时挪用此要领
__unset( $property ) 当在一个不决义的属性上挪用unset()函数时挪用此要领
与__get要领和__set要领不异,这里的没有声明包孕访谒控制为proteced,private的属性(即没有权限访谒的属性)
3、__call

__call( $method, $arg_array ) 当挪用一个不决义(包孕没有权限访谒)的要领是挪用此要领

4、__autoload

__autoload 函数,使用尚未被界说的类时自动挪用。通过此函数,脚本引擎在 PHP 堕落掉败前有了最后一个机会加载所需的类。

注意: 在 __autoload 函数中抛出的异常不能被 catch 语句块捕获并导致致命错误。

5、__construct、__destruct

__construct 结构要领,当一个东西被创建时挪用此要领,好处是可以使结构要领有一个并世无双的名称,无论它地址的类的名称是什么,这样你在转变类的名称时,就不需要转变结构要领的名称
__destruct 析构要领,PHP将在东西被销毁前(即从内存中断根前)挪用这个要领
默认情况下,PHP仅仅释放东西属性所占用的内存并销毁东西相关的资源.,析构函数允许你在使用一个东西之后执行任意代码来断根内存,当PHP决定你的脚本不再与东西相关时,析构函数将被挪用.,在一个函数的定名空间内,这会产生在函数return的时候,对付全局变量,这产生于脚本结束的时候,如果你想明确地销毁一个东西,你可以给指向该东西的变量分配任何其它值,凡是将变量赋值勤为NULL或者挪用unset。

6、__clone

PHP5中的东西赋值是使用的引用赋值,使用clone要领复制一个东西时,东西会自动挪用__clone魔术要领,如果在东西复制需要执行某些初始化操纵,可以在__clone要领实现。

7、__toString 

__toString要领在将一个东西转化成字符串时自动挪用,好比使用echo打印东西时,如果类没有实现此要领,则无法通过echo打印东西,否则会显示:Catchable fatal error: Object of class test could not be converted to string in,此要领必需返回一个字符串。

在PHP 5.2.0之前,__toString要领只有结合使用echo() 或 print()时 才华生效。PHP 5.2.0之后,则可以在任何字符串环境生效(例如通过printf(),使用%s修饰符),但 不能用于非字符串环境(如使用%d修饰符)。从PHP 5.2.0,如果将一个不决义__toString要领的东西 转换为字符串,会报出一个E_RECOVERABLE_ERROR错误。

8、__sleep、__wakeup

__sleep 串行化的时候用
__wakeup 反串行化的时候挪用
serialize() 查抄类中是否有魔术名称 __sleep 的函数。如果这样,该函数将在任何序列化之前运行。它可以断根东西并应该返回一个包罗有该东西中应被序列化的所有变量名的数组。

使用 __sleep 的目的是封锁东西可能具有的任何数据库连接,提交期待中的数据或进行类似的断根任务。别的,如果有非常大的东西而并不需要完全储存下来时此函数也很有用。

相反地,unserialize() 查抄具有魔术名称 __wakeup 的函数的存在。如果存在,此函数可以重建东西可能具有的任何资源。使用 __wakeup 的目的是重建在序列化中可能丢掉的任何数据库连接以及措置惩罚惩罚其它从头初始化的任务。

9、__set_state

当挪用var_export()时,这个静态 要领会被挪用(自PHP 5.1.0起有效)。本要领的独一参数是一个数组,此中包罗按array(’property’ => value, …)格局摆列的类属性。

10、__invoke

当测验考试以挪用函数的方法挪用一个东西时,__invoke 要领会被自动挪用。PHP5.3.0以上版本有效
11、__callStatic

它的事情方法类似于 __call() 魔术要领,__callStatic() 是为了措置惩罚惩罚静态要领挪用,PHP5.3.0以上版本有效,PHP 确实加强了对 __callStatic() 要领的界说;它必需是大众的,并且必需被声明为静态的。同样,__call() 魔术要领必需被界说为大众的,所有其他魔术要领都必需如此。

PHP中的11个魔术要领

温馨提示: 本文由Jm博客推荐,转载请保留链接: https://www.jmwww.net/file/web/30531.html