php中的类魔术方法有:1、__sleep,返回一个包含对象中所有应被序列化的变量名称的数组;2、__tostring,返回一个类被当作字符串时要输出的内容;3、__construct,构造方法;4、__destruct,析构方法。

在PHP中将所有以双下划线(__)开头的类方法保留为魔术方法。

(推荐教程:php图文教程)

下面我们来看看都有哪些魔术方法:

1、__sleep:返回一个包含对象中所有应被序列化的变量名称的数组。

serialize函数在序列化类时首先会检查类中是否存在__sleep方法。如果存在,会先调用此方法然后再执行序列化操作,并且只对__sleep返回的数组中的属性进行序列化。如果__sleep不返回任何内容,则null会被序列化,并产生E_NOTICE级别的错误。

__sleep不能返回父类的私有成员,否则会产生E_NOTICE级别的错误。对于一些很大但不需要保存全部数据的对象此方法很有用。

2、__wakeup:与__sleep相反,是在unserialize函数反序列化时首先会检查类中是否存在__wakeup方法,如果存在会先调用次方法然后再执行反序列化操作。用于在反序列化之前准备一些对象需要的资源,或其他初始化操作。

3、__tostring:返回一个类被当做字符串时要输出的内容,此方法必须返回字符串并且不能在此方法中抛出异常,否则会产生致命错误。

在PHP5.2之前此方法只有在直接使用echo和print时才生效,之后则可以在任何字符串环境生效,如果将一个未定义__toString方法的对象转换为字符串,会产生致命错误。

(视频教程推荐:php视频教程)

4、__invoke:PHP5.3起,当尝试以函数的方式调用对象时,会调用此方法。

5、__set_state:PHP5.1起,当调用var_export函数导出类时,会调用此静态方法。此方法只有一个参数,是一个包含按属性为键,属性值为值的数组。此方法可以用来控制哪些成员可以被导出。

6、__debugInfo:PHP5.6起,当调用var_dump函数打印对象的属性时会调用此方法,此方法可以用来控制哪些属性可以被打印,如果没有定义此方法,则对象中所有的public、protected、private的属性都会被打印。返回一个包含可以被打印的属性的数组。

7、__construct:构造函数。

8、__destruct:析构函数。

9、__set、__get、__isset、__unset:重载属性。

10、__call、__callstatic:重载方法。

11、__clone:对象复制。

php5中魔术方法函数有哪几个,php中的类魔术方法有哪些相关推荐

  1. python中list作为函数参数_在python中list作函数形参,防止被实参修改的实现方法

    0.摘要 我们将一个list传入函数后,函数内部对实参修改后,形参也会随之改变.本文将主要介绍这种错误的现象.原因和解决方法. 1.代码示例 def fun(inner_lst): inner_lst ...

  2. MYSQL中的REPLACE函数,以及Hive中的regexp_replace的用法

    MYSQL中的REPLACE函数,以及Hive中的regexp_replace的用法 一.repacle是什么? 二.使用步骤 1.实践是检验真理的唯一标准 2.Hive中的替换函数regexp_re ...

  3. laravel控制器方法中,用函数作为变量进行传递时的处理方法

    本人在做上传图片时,里面执行的方法时一致的,只是个别地方不同,这种情况下,就需要把公用的部分提取出来,把不同的地方放到回调函数种去. StudentController中的方法: public fun ...

  4. tensorflow中的正则化函数在_『TensorFlow』正则化添加方法整理

    一.基础正则化函数 tf.contrib.layers.l1_regularizer(scale, scope=None) 返回一个用来执行L1正则化的函数,函数的签名是func(weights). ...

  5. smarty中使用php函数,在smarty模板中使用PHP函数的方法

    在smarty模板中使用PHP函数的方法 发布于 2014-11-23 22:57:51 | 174 次阅读 | 评论: 0 | 来源: 网友投递 Smarty模板引擎Smarty是一个使用PHP写出 ...

  6. java中的dispose函数_[转载]java中的dispose()方法

    这是我第100篇IT技术文章,也正好让我实现了一个完整的从客户端输入参数,使用遗传算法计算生产排程的实例,前端由客户输入种群大小,遗传代数,交叉概率,变异概率,零件数,机器数,时间矩阵,机器矩阵,经运 ...

  7. 中常用的函数_ST语言编程中常用的函数/功能块

    大部分PLC都会内置很多基本的函数和功能块供编程人员调用,而且很多具有通用性,也就是在不同品牌的PLC中,这些函数和功能块的名称.用法和功能相同,记住这些函数和功能块的名称和使用方法,能让我们编程时更 ...

  8. java中求组快速排序函数,如何在Java中实现快速排序?

    成为专业认证的快速排序是一种分而治之的算法.在分治算法的设计范式中,我们先递归地将问题分解成子问题,然后再求解子问题,最后将求解结果进行组合得到最终结果.在本文中,我们将重点讨论Java中的快速排序本 ...

  9. sql中截取字符串函数_SQL Server 2017中的顶级SQL字符串函数

    sql中截取字符串函数 SQL Server 2017 has been in the talk for its many features that simplify a developer's l ...

最新文章

  1. php 登录注册api接口代码
  2. 9、ShardingSphere 之 Sharding-Proxy 读写分离
  3. 程序员体健康的各项指标是多少?
  4. K8S之HELM详细介绍
  5. RTC 媒体流数据包丢包问题解决
  6. html.parser python_python模块之HTMLParser
  7. Linux 禁用msi模式,禁用MSI模式支持
  8. Simulink之理想开关
  9. Youki的C++命名规则
  10. C++交换两个数组的前n个字节
  11. FFmpeg总结(六)AV系列结构体之AVPacket
  12. tcpip路由技术卷一_计算机网络题库考(2020.9.10晚18.320.30 北京卷)
  13. F2FS文件系统工具简介
  14. HTC G10官方解锁 刷机
  15. PgAdmin3 LST v1.23.0.b (BigSQL) which support pg10.4
  16. java读取文件 classpath_Java读取Classpath文件
  17. [渝粤教育] 西南科技大学 机械设计基础 在线考试复习资料
  18. idea 创建一个springboot 项目(hello world)
  19. 微信小程序项目实例Java后台的小程序求职招聘|兼职管理系统
  20. select下拉列表支持搜索功能

热门文章

  1. windows如何添加本机dns记录_如何规避Sysmon DNS监控
  2. BiB: 电子科大邹权组构建基于肠道菌群平衡的疾病预测模型及微生物生物标志物发掘平台...
  3. MPB:南农成艳芬组-瘤胃微生物体外发酵过程与注意事项
  4. FEMS综述: 如何从微生物网络中的“毛线球”理出头绪(3万字长文带你系统学习网络)...
  5. 扩增子分析流程1. QIIME虚拟机安装配置及挂载外部目录
  6. 计算机专业教育,科学网—中国大学计算机教育路在何方? - 吴军的博文
  7. python使用matplotlib对比多个模型的在训练集上的效果并使用柱状图进行可视化:基于交叉验证的性能均值(mean)和标准差(std)进行可视化分析、使用标准差信息添加误差区间条yerr
  8. R语言sys方法:sys.timezone函数返回当前系统时区的名称、system.File函数查找系统文件或者安装包的文件路径(例如查看R Base可安装路径、dplyr包的安装路径)
  9. R语言apropos函数查找包含特定字符的函数、find函数查找函数所在的位置实战
  10. AttributeError: ‘Series‘ object has no attribute ‘as_matrix‘