美文网首页
魔术方法

魔术方法

作者: zhyke | 来源:发表于2018-08-16 17:04 被阅读0次

__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.一定要返回一个数组,不然会报错 "serialize(): __sleep should return an array only containing the names of instance-variables to serialize"

2. 一定要返回对象的属性,否则serialize(): __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()的时候触发

相关文章

网友评论

      本文标题:魔术方法

      本文链接:https://www.haomeiwen.com/subject/isyobftx.html