在php中将所有以“__”即两个下划线开头的类方法保留为魔术方法,PHP中魔术方法有“__construct()”、“__destruct()”、“__call()”、“__callStatic()”、“__get()”等等。

魔术方法

__construct(), __destruct(), __call(), __callStatic(), __get(), __set(), __isset(), __unset(), __sleep(), __wakeup(), __toString(), __invoke(), __set_state(), __clone() 和 __debugInfo() 等方法在 PHP 中被称为魔术方法(Magic methods)。在命名自己的类方法时不能使用这些方法名,除非是想使用其魔术功能。

Caution

PHP 将所有以 (两个下划线)开头的类方法保留为魔术方法。所以在定义类方法时,除了上述魔术方法,建议不要以 为前缀。

__sleep() 和 __wakeup()

public __sleep ( void ) : array

__wakeup ( void ) : void

serialize() 函数会检查类中是否存在一个魔术方法 __sleep()。如果存在,该方法会先被调用,然后才执行序列化操作。此功能可以用于清理对象,并返回一个包含对象中所有应被序列化的变量名称的数组。如果该方法未返回任何内容,则 NULL 被序列化,并产生一个 E_NOTICE 级别的错误。

Note:

__sleep() 不能返回父类的私有成员的名字。这样做会产生一个 E_NOTICE 级别的错误。可以用 Serializable 接口来替代。

__sleep() 方法常用于提交未提交的数据,或类似的清理操作。同时,如果有一些很大的对象,但不需要全部保存,这个功能就很好用。

与之相反,unserialize() 会检查是否存在一个 __wakeup() 方法。如果存在,则会先调用 __wakeup 方法,预先准备对象需要的资源。

__wakeup() 经常用在反序列化操作中,例如重新建立数据库连接,或执行其它初始化操作。

本文由(学源码 -- 教程之家)整理发布,转载请注明出处:https://www.xueyuanma.com/article/61.html

本站发布的文章及附件仅限于学习和研究目的;不得将上述内容用于商业或非法用途,否则后果请用户自负。

本站发布的文章及附件若侵犯到您的权益,请邮件联系 admin@xueyuanma.com 说明情况,我们将及时处理!

您必须在下载后的24个小时之内,从您的电脑中彻底删除上述内容,请支持正版软件,得到更好的正版服务。

php魔术方法的理解,php魔术方法的认识相关推荐

  1. 【Java基础】本地方法的理解(native方法)

    1.什么是本地方法? 本地方法就是java代码里面写的native方法,它没有方法体.是为了调用C/C++代码而写的.在JNI程序里面使用. 例子: 下面的代码在java中声明了一个本地方法,但是没有 ...

  2. php 魔术方法调用,php魔术方法调用(php魔法方法)

    1.理解PHP中神奇方法的定义 2.了解__clone()魔术方法的使用场景 3.掌握__clone()魔术方法的用法 PHP将所有以_ _(两个下划线)开头的类方法保留为神奇的方法.因此,在定义类方 ...

  3. python魔术方法print_Python中的魔术方法入门

    介绍 在Python中,所有以"__"双下划线包起来的方法,都统称为"Magic Method",中文称『魔术方法』,例如类的初始化方法 __init__ ,P ...

  4. php _set魔术方法的用法,PHP魔术方法__GET、__SET使用实例

    这篇文章主要介绍了PHP魔术方法__GET.__SET使用实例,本文在代码中做了详细的注释,需要的朋友可以参考下 __get() - 读取不可访问属性的值时,__get() 会被调用. __set() ...

  5. php魔术方法 效率,PHP常用魔术方法的性能探究

    性能往往是衡量代码很重要的一个标准.我们日常编码中经常会用到一些魔术方法,这些PHP提供的魔术方法是否会影响我们程序的性能呢?是否需要减少魔术方法 的使用呢?本文将通过测试对比来了解魔术方法对性能的影 ...

  6. python描述符魔术方法_Python类型转换的魔术方法详解

    本文讨论python中将某个复杂对象转换为简单对象或数据类型的常用魔术放啊,这些在编程中是十分有用的. 1.__str__方法. 在讲解本方法前我们先打开一个jupyter notebook,随意创建 ...

  7. 魔术轮胎,dugoff轮胎建模 采用模块化建模方法,搭建非线性魔术轮胎PAC2002,dugoff模型

    魔术轮胎,dugoff轮胎建模 软件使用:Matlab/Simulink 适用场景:采用模块化建模方法,搭建非线性魔术轮胎PAC2002,dugoff模型. 非线性轮胎模型输入: 轮胎侧偏角,轮胎滑移 ...

  8. php 魔术方法__get,php常用魔术方法

    1.构造函数__construct()和析构函数__desctruct()分别在对象创建和销毁时被调用.对象被"销毁"是指不存在任何对该对象的引用,比如引用该对象的变量被删除(un ...

  9. python 构造函数 __init__()方法的理解

    用到__init__函数(方法), 首先,两个下划线开头的函数是声明该属性为私有,不能在类的外部被使用或访问. 而__init__函数(方法)支持带参数类的初始化,也可为声明该类的属性(类中的变量). ...

最新文章

  1. python——xpath
  2. 列表(list)之一定义 添加 删除 排序 反转 索引等其他操作
  3. Solr安装(单机版)
  4. python selenium post请求_工作随笔——selenium支持post请求,支持自定义header
  5. 前端学习(1338):mongoDB删除文档
  6. 服务器内存类型UDIMM、RDIMM和LRDIMM比较
  7. 大数据Hadoop原理学习(HDFS,MAPREDUCE,YARN)
  8. 计算机视觉基础-图像处理 Task05 图像分割/二值化
  9. Mysql数据库安装和配置
  10. Spring Cloud Alibaba系列教程-03-搭建生产可用的Nacos集群
  11. 论文笔记:Template-free Prompt Tuning for Few-shot NER
  12. 单片机STM32入门——(1)程序结构
  13. php仿糗事百科,thinkphp精仿糗事百科整站源码
  14. 紧随大厂脚步入局海外3A,米哈游造出下一个“原神”难?
  15. 嵌入式开发学习之--RCC(下)
  16. 《动手学深度学习(Dive into Deeplearning)》(第二版)——第二章 _2.3 线性代数
  17. 汉字转首字母大写并排序
  18. Screenshot
  19. 流程/规则框架-ice设计
  20. 日本知名汽车零部件公司巡礼系列之株式会社97

热门文章

  1. Java中char类型占几个字节?
  2. 倍福Twincat 3.0软件与C++通讯问题(ADS通讯)
  3. 为什么我们喜欢游戏联动?
  4. css 网页自适应方案 大屏自适应方案
  5. 【Qt学习】 登录验证 注册 功能实现
  6. 小米安装linux驱动怎么安装教程,小米数据线驱动-小米usb驱动程序下载 官方最新版-附小米手机驱动图文安装方法-IT猫扑网...
  7. VM虚拟机里的系统鼠标不能动的问题
  8. servlet解决浏览器的跨域
  9. 百度AI开发者大会见闻
  10. ai神经网络滤镜安装包,神经网络ai滤镜用不了