位置: 编程技术 - 正文

详解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中的常用魔术有哪些)

  • 2023年印花税如何计算
  • 申报个税时怎么获取个税专项附加扣除
  • acca b/f
  • 全年没有超过起征点需要汇算吗
  • 计提利息收入分录怎么写
  • 以销定产如何核算成本
  • 洒水车计提折旧会计分录
  • 采购部差旅费会计分录怎么做
  • 暂时没开发票的销项税需要做账吗
  • 退去年的教育费附加
  • 补充医疗保险能自己交吗
  • 营改增对小规模的影响
  • 折旧完的固定资产出售
  • 生产车间的房屋租赁费计入什么科目
  • 托收承付是收到钱了吗
  • 食品发票可以抵扣所得税吗
  • 小规模纳税人是简易计税吗
  • 开具发票只有票号可以吗?
  • 对公账户提取备用金可以每天提现嘛
  • 地下建筑如何防潮
  • 商业承兑汇票背书转让流程图
  • 销售净利率计算公式是什么
  • 金蝶k3初始余额录入打不进字
  • 公司税务风险怎么解决
  • 认缴出资未缴纳公司可以减资吗
  • 如何能屏蔽自动扣费服务
  • 负债类科目的分类
  • 开房租发票交的税,因优惠政策退税,怎么账务处理
  • 餐饮业会计做账技巧
  • PHP:xml_parse_into_struct()的用法_XML解析器函数
  • 公寓收费标准
  • mmc.exe是什么进程
  • 鸟瞰生长在森林中的植物
  • vue的自定义指令怎么用
  • 汇兑应计入哪个科目
  • php调用变量的符号
  • java基础笔试题在线考
  • XF86Setup命令 设置XFee86
  • 企业年金管理费专票能抵扣吗
  • 当月认证的发票可以撤销吗
  • 织梦系统
  • mongodb createindex
  • 出资人和法人承担责任
  • 银行承兑汇票回头背书
  • 无形资产属于货物吗为什么
  • 短期偿债能力是企业的任何利益关系人都
  • 海关进口增值税专用缴款书
  • 坏账准备贷方余额期末如何处理
  • 费用转销是什么意思
  • 交易性金融资产的入账价值
  • 社会保险费计提分录
  • 信息服务费也有滞纳金吗
  • 车辆加油费会计分录
  • 增值税发票备注栏最新规定
  • sql server的go
  • mysql数据库迁移上云
  • ubuntu15.10中文版
  • mac的command键相当于pc的什么键
  • 盗版win7升级win10
  • marvell 网卡驱动
  • win10registry
  • Win7系统如何打开摄像头
  • edxposed 作用域
  • android 布局
  • perl语言基本命令
  • nodejs xhr
  • 利用Python中的turtle绘制乡村振兴
  • vue复用node_module
  • jquery滚动条滚动事件
  • jquery实现ajax加载超时提示的方法
  • 人员进出管理系统
  • python写邮箱
  • javascript面向对象编程指南第三版
  • python框架scrapy
  • 广州电子税务局财务报表在哪里查询
  • 广东省退休公务员死亡抚恤金和丧葬费标准
  • 广东税务app申报不小心点到了不再提示
  • 安徽省政府非税收入专用收据查询
  • 美国各州地税税率
  • 企业所得税年报什么时候结束
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

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

    友情链接: 武汉网站建设