__clone()
1.当使用clone的时候触发
2.需要定义在对应的类内
3.必须是public的权限
__get($var)
当访问不存在/不可访问的参数的时候调用,必须是public
__set($key,$var)
当设置不存在/不可访问的参数的时候调用,必须是public
__call()
调用不存在/不可访问的方法时会触发,这个不存在的定义有:1.类内根本就没有定义 2.类内有定义对应的方法,但是权限不够.这些都会触发
__toString()
echo一个对象的时候调用.
__sleep()
serialize一个对象的时候调用.
作用:使用__sleep的目的是提交等待中的数据或进行类似的清除任务。此外,如果有非常大的对象而并不需要完全储存下来时此函数也很有用。----PHP: 魔术函数 __sleep 和 __wakeup - Manual
注意:(总之记住:serialize是为了序列化一个对象保存,但是如果你__sleep返回的是和对象没关的,那这个方法就没有作用了,同时序列化的是对象,不是类(我的理解就是类是没有作用的).所以你对对象的操作会在序列化的时候保存下来)
1.一定要返回一个数组,不然会报错 " __sleep should return an array only containing the names of instance-variables to serialize"
2. 一定要返回对象的属性,否则__sleep should return an array only containing the names of instance-variables to serialize.
3.一定要返回的数组中的val一定要是属性,不然报错Notice: serialize(): "1" returned as member variable from __sleep() but does not exist in
想深入了解的可以查看PHP: 魔术方法 - Manual
案例
__wakeup()
调用unserialize()的时候触发