PHP中之魔术点子(2)

1、__get、__set
当下有限单办法是啊在类似与她们之父类中莫注明的特性而设计的
__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 ) 当调用一个请勿定义的计是调动用之访求
这里的未定义的不二法门包括无权限访问的不二法门

PHP,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()魔术点子要于定义也集体的,所有其他魔术点子都不可能不使

相关文章