位置: 编程技术 - 正文

详解php魔术方法(Magic methods)的使用方法(php常用的魔术方法有哪些)

编辑:rootadmin

推荐整理分享详解php魔术方法(Magic methods)的使用方法(php常用的魔术方法有哪些),希望有所帮助,仅作参考,欢迎阅读内容。

文章相关热门搜索词:php 魔术方法,详解php魔术方法教程,详解php魔术方法教程,php魔术方法的讲解与使用,php魔术方法的讲解与使用,php 魔术方法,详解php魔术方法图解,详解php魔术方法视频,内容如对您有帮助,希望把文章链接给更多的朋友!

PHP中把以两个下划线__开头的方法称为魔术方法,这些方法在PHP中充当了举足轻重的作用。 魔术方法包括:

__construct(),类的构造函数 __destruct(),类的析构函数 __call(),在对象中调用一个不可访问方法时调用 __callStatic(),用静态方式中调用一个不可访问方法时调用 __get(),获得一个类的成员变量时调用 __set(),设置一个类的成员变量时调用 __isset(),当对不可访问属性调用isset()或empty()时调用 __unset(),当对不可访问属性调用unset()时被调用。 __sleep(),执行serialize()时,先会调用这个函数 __wakeup(),执行unserialize()时,先会调用这个函数 __toString(),类被当成字符串时的回应方法 __invoke(),调用函数的方式调用一个对象时的回应方法 __set_state(),调用var_export()导出类时,此静态方法会被调用。 __clone(),当对象复制完成时调用

__construct()和__destruct()

构造函数和析构函数应该不陌生,他们在对象创建和消亡时被调用。例如我们需要打开一个文件,在对象创建时打开,对象消亡时关闭

这两个方法在继承时可以扩展,例如:

__call()和__callStatic()

在对象中调用一个不可访问方法时会调用这两个方法,后者为静态方法。这两个方法我们在可变方法(Variable functions)调用中可能会用到。

__get(),__set(),__isset()和__unset()

当get/set一个类的成员变量时调用这两个函数。例如我们将对象变量保存在另外一个数组中,而不是对象本身的成员变量

__sleep()和__wakeup()

详解php魔术方法(Magic methods)的使用方法(php常用的魔术方法有哪些)

当我们在执行serialize()和unserialize()时,会先调用这两个函数。例如我们在序列化一个对象时,这个对象有一个数据库链接,想要在反序列化中恢复链接状态,则可以通过重构这两个函数来实现链接的恢复。例子如下:

__toString()

对象当成字符串时的回应方法。例如使用echo $obj;来输出一个对象

这个方法只能返回字符串,而且不可以在这个方法中抛出异常,否则会出现致命错误。

__invoke()

调用函数的方式调用一个对象时的回应方法。如下

__set_state()

调用var_export()导出类时,此静态方法会被调用。

__clone()

当对象复制完成时调用。例如在设计模式详解及PHP实现:单例模式一文中提到的单例模式实现方式,利用这个函数来防止对象被克隆。

魔术常量(Magic constants)

PHP中的常量大部分都是不变的,但是有8个常量会随着他们所在代码位置的变化而变化,这8个常量被称为魔术常量。

__LINE__,文件中的当前行号 __FILE__,文件的完整路径和文件名 __DIR__,文件所在的目录 __FUNCTION__,函数名称 __CLASS__,类的名称 __TRAIT__,Trait的名字 __METHOD__,类的方法名 __NAMESPACE__,当前命名空间的名称

这些魔术常量常常被用于获得当前环境信息或者记录日志。

标签: php常用的魔术方法有哪些

本文链接地址:https://www.jiuchutong.com/biancheng/290323.html 转载请保留说明!

上一篇:PHP浮点比较大小的方法(php字符串比较大小)

下一篇:php中的常用魔术方法汇总(php中的常用魔术有哪些)

  • 收到汇算清缴退款会计分录
  • 发票金额多开了有事吗
  • 权益法核算的好处
  • 开具不规范的发票
  • 无形资产的摊销,可摊销的标准是什么?
  • 预付装修费的会计分录
  • 拆装厂房
  • 多付的货款怎么追回
  • 发票开的是推广服务费计入什么费用?
  • 食堂开支计入什么科目
  • 货款和发票金额不符
  • 财产转让所得税计算方法
  • 本月有收入免增值税吗
  • 劳务公司开的3%专用发票能抵扣吗
  • 免抵税额和免抵退税额有什么区别
  • 增值税专票销售额比对(非差额企业)
  • 购进非税货物有折扣怎么做账?
  • 一般纳税人普通发票要交增值税吗
  • 收入冲减费用
  • 2020年开公司优惠政策
  • 三险一金专项扣除怎么查
  • 刷信用卡没手续费
  • 安全平台无法认证怎么办
  • thinkphp 模型
  • windows modules installer worker怎么禁用
  • kb4586853更新
  • vue编写网页
  • php中header的用法
  • 公司每年都有什么费用
  • 下一页分页符中间空白页
  • 终于见识到什么叫云横秦岭了
  • 二元运算例子
  • println参数
  • 如何正确配置防火墙安全策略
  • rm -rf/指令指删除什么
  • 个人工程款结算了对方不付怎么办
  • 出口生产型企业
  • dedecms更新
  • sqlcoalesce
  • mongodb数据库查询用多少存储
  • sql group by
  • 政府购买服务交流发言材料
  • 国家为什么要征收各种税
  • 如何安装sql server2022
  • 企业原材料成本占比
  • 一个分组名称
  • 春节补贴是正数还是负数
  • 速动比率例子
  • 企业发展基金返还条件
  • 用友薪资管理怎么取消启用
  • 6月收到4月的单子怎么办
  • 抵扣认证的发票怎么冲红
  • 税金及附加没有设置二级科目,有啥影响吗
  • 未确认融资费用借贷方向
  • 银行汇票的适用主体
  • sql语句查询去重
  • mac自带的看图软件怎么使用
  • mac怎么把视频设置成桌面
  • windows照片查看器在哪打开
  • 硬盘安装好了显示不出来怎么办
  • 标签windows
  • 下载手游网
  • java中遍历数组的方法
  • unity的ugui
  • unity方法大全
  • unity怎么设置多个关卡
  • 简单的jquery插件实例
  • android-ListView(1)-listview概览
  • node.js的内置模块
  • python数字运算规则
  • Unity3D的iTween
  • JavaScript浏览器扩展
  • 红杏是什么意思什么样的
  • jquery 鼠标
  • 所得税季度报表收入成本怎么填
  • 建筑垃圾清运属于什么应税服务
  • 多交了个人所得税怎么算
  • 税收制度的核心是税法
  • 电子税务局房产税原值怎么改
  • 文件清理规则
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

    网站地图: 企业信息 工商信息 财税知识 网络常识 编程技术

    友情链接: 武汉网站建设