魔术方法

__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()的时候触发

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 135,380评论 19 139
  • 一) __autoload():当实例化一个不存在的类的时候,自动调用的方法 这个魔术方法是用来自动加载程序所用到...
    flamez57阅读 4,949评论 0 1
  • 1. Java基础部分 基础部分的顺序:基本语法,类相关的语法,内部类的语法,继承相关的语法,异常的语法,线程的语...
    子非鱼_t_阅读 31,929评论 18 399
  • Android 自定义View的各种姿势1 Activity的显示之ViewRootImpl详解 Activity...
    passiontim阅读 175,298评论 25 709
  • 这是我的第三个年终总结。去看了一下14年和15年的总结。如果说那是自我改变的初期阶段,那么今年就是不断完善的过程。...
    汐汐凌晨阅读 3,984评论 6 4