首页 php教程 php手册 探秘PHP中的魔术方法

探秘PHP中的魔术方法

Jun 06, 2016 pm 07:57 PM
linux php 探秘 方法 社区 进入 魔术

欢迎进入Linux社区论坛,与200万技术人员互动交流 >>进入 有了构造函数,我们可以像下面的代码一样实例化一个Device类的对象。 1 $device=new Device('iPhone',$battery); 2.析构函数:__destruct() 与构造函数相反,析构函数是在对象被销毁时由系统自

欢迎进入Linux社区论坛,与200万技术人员互动交流 >>进入

 

  有了构造函数,我们可以像下面的代码一样实例化一个Device类的对象。

  1 $device=new Device('iPhone',$battery);

  2.析构函数:__destruct()

  与构造函数相反,析构函数是在对象被销毁时由系统自动调用的。在类中定义构造函数的方式如下:

  public function __destruct(){

  $this->disconnect();

  }

  在这个析构函数中,在对象被销毁之前,析构器先调用了类中的disconnect()函数。

  三、属性重载

  根据PHP手册中的说明,PHP所提供的"重载"(overloading)是指动态地"创建"类属性和方法。我们是通过魔术方法(magic methods)来实现的。

  当调用当前环境下未定义或不可见的类属性或方法时,重载方法会被调用,换句话说,当访问一个类中可访问的方法或属性时,重载方法不会被调用。所有的重载方法都必须被声明为 public.

  1.__get()

  当读取不可访问属性的值时,__get() 会被调用。

  2.__set()

  在给不可访问属性赋值时,__set() 会被调用。

  3.__isset()

  当对不可访问属性调用 isset() 或 empty() 时,__isset() 会被调用。

  4.__unset()

  当对不可访问属性调用 unset() 时,__unset() 会被调用。

  四、将对象转换为字符串:__toString()

  在我们试图将对象当做一个普通字符串来对待时,__toString方法会被调用。比如,当我们打印一个对象时,就会自动调用该函数,如:echo $对象名,如果没有定义__toString方法,那么PHP将返回一个错误。

  五、克隆对象:__clone()

  当我们克隆一个对象时,魔术方法__clone()会被自动调用

  六、对象序列化

  序列化是将任何数据转化为字符串格式的一个过程。通过序列化,我们可以将一个完整的对象保存在一个文件或者保存在数据库中。有关序列化的一个问题是,并不是所有的数据都可以被序列化,例如一个数据库连接。

  1.__sleep()

  当我们对一个对象使用serialize()函数时,__sleep()函数会被调用。

  2.__wakeup()

  当我们对一个对象使用unserialize()函数时,__wakeup()函数会被调用。

  七、方法重载

  1.__call()

  在对象中调用一个不可访问方法时,__call() 会被调用。

  2.__callStatic() (PHP 5.3)

  用静态方式中调用一个不可访问方法时,__callStatic() 会被调用。

  八、将对象当作函数使用

  1.__invoke

  当我们试图将对象当做函数来使用时,该方法会被调用。

  九、自动加载类

  1.__autoload()

  该方法是我们在实例化一个类时,允许程序自动寻找类文件,并将类文件加载到当前脚本,可以简化很多我们对require的使用。

  [1] [2] 

探秘PHP中的魔术方法

本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

热AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover

AI Clothes Remover

用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool

Undress AI Tool

免费脱衣服图片

Clothoff.io

Clothoff.io

AI脱衣机

AI Hentai Generator

AI Hentai Generator

免费生成ai无尽的。

热门文章

R.E.P.O.能量晶体解释及其做什么(黄色晶体)
3 周前 By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.最佳图形设置
3 周前 By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.如果您听不到任何人,如何修复音频
3 周前 By 尊渡假赌尊渡假赌尊渡假赌

热工具

记事本++7.3.1

记事本++7.3.1

好用且免费的代码编辑器

SublimeText3汉化版

SublimeText3汉化版

中文版,非常好用

禅工作室 13.0.1

禅工作室 13.0.1

功能强大的PHP集成开发环境

Dreamweaver CS6

Dreamweaver CS6

视觉化网页开发工具

SublimeText3 Mac版

SublimeText3 Mac版

神级代码编辑软件(SublimeText3)

如何解决Linux终端中查看Python版本时遇到的权限问题? 如何解决Linux终端中查看Python版本时遇到的权限问题? Apr 01, 2025 pm 05:09 PM

Linux终端中查看Python版本时遇到权限问题的解决方法当你在Linux终端中尝试查看Python的版本时,输入python...

在Docker环境中使用PECL安装扩展时为什么会报错?如何解决? 在Docker环境中使用PECL安装扩展时为什么会报错?如何解决? Apr 01, 2025 pm 03:06 PM

在Docker环境中使用PECL安装扩展时报错的原因及解决方法在使用Docker环境时,我们常常会遇到一些令人头疼的问�...

解释PHP中的晚期静态绑定(静态::)。 解释PHP中的晚期静态绑定(静态::)。 Apr 03, 2025 am 12:04 AM

静态绑定(static::)在PHP中实现晚期静态绑定(LSB),允许在静态上下文中引用调用类而非定义类。1)解析过程在运行时进行,2)在继承关系中向上查找调用类,3)可能带来性能开销。

在PHP API中说明JSON Web令牌(JWT)及其用例。 在PHP API中说明JSON Web令牌(JWT)及其用例。 Apr 05, 2025 am 12:04 AM

JWT是一种基于JSON的开放标准,用于在各方之间安全地传输信息,主要用于身份验证和信息交换。1.JWT由Header、Payload和Signature三部分组成。2.JWT的工作原理包括生成JWT、验证JWT和解析Payload三个步骤。3.在PHP中使用JWT进行身份验证时,可以生成和验证JWT,并在高级用法中包含用户角色和权限信息。4.常见错误包括签名验证失败、令牌过期和Payload过大,调试技巧包括使用调试工具和日志记录。5.性能优化和最佳实践包括使用合适的签名算法、合理设置有效期、

如何在LAMP架构下高效整合Node.js或Python服务? 如何在LAMP架构下高效整合Node.js或Python服务? Apr 01, 2025 pm 02:48 PM

在LAMP架构下整合Node.js或Python服务许多网站开发者都面临这样的问题:已有的LAMP(Linux Apache MySQL PHP)架构网站需要...

在Linux终端中使用python --version命令时如何解决权限问题? 在Linux终端中使用python --version命令时如何解决权限问题? Apr 02, 2025 am 06:36 AM

Linux终端中使用python...

Linux系统自带Python解释器能删除吗? Linux系统自带Python解释器能删除吗? Apr 02, 2025 am 07:00 AM

关于Linux系统自带Python解释器的删除问题许多Linux发行版在安装时会预装Python解释器,它并非通过软件包管理器�...

什么是PHP魔术方法(__ -construct,__destruct,__call,__get,__ set等)并提供用例? 什么是PHP魔术方法(__ -construct,__destruct,__call,__get,__ set等)并提供用例? Apr 03, 2025 am 12:03 AM

PHP的魔法方法有哪些?PHP的魔法方法包括:1.\_\_construct,用于初始化对象;2.\_\_destruct,用于清理资源;3.\_\_call,处理不存在的方法调用;4.\_\_get,实现动态属性访问;5.\_\_set,实现动态属性设置。这些方法在特定情况下自动调用,提升代码的灵活性和效率。

See all articles