位置: 编程技术 - 正文

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

  • 银行委托贷款上征信吗
  • 网络课程购买
  • 建筑业异地预缴税款时间
  • 投资收益纳税调整明细表怎么填
  • 车船使用税会打折么
  • 固定资产转移是什么意思
  • 在建工程贷款利息分录
  • 增值税是5%的是什么
  • 滞纳金按年怎么算
  • 红发票和蓝发票
  • 处置固定资产简易征收
  • 支付劳务派遣管理费现金流量表里放在哪里
  • 当期计提加计抵减额如何确定
  • 房地产企业预缴增值税怎么计算
  • 企业丢失账簿稽查局可以处罚吗
  • 生产成本直接材料包括哪些
  • 跨月的普通发票怎么开
  • 企业委托银行收款,银行以办妥手续,而企业尚未收到凭证
  • 企业发生的间接生产费用应
  • 企业中由特定人员所承担的一项
  • 公司法人信息变更是先去税务局还是先去银行
  • 非独立核算的分公司是法人主体吗
  • 没有费用报销单发票可以直接报销吗
  • 没有把发票开给客户公司注销了怎么办
  • 一般纳税人减免税款的会计分录
  • 母公司捐赠给子公司原材料怎么处理
  • 生育津贴还扣税吗
  • 高新技术企业取消资格的程序
  • 会计谨慎性原则是指
  • 社保多交怎么办理
  • 一般纳税人存货入账价值
  • mac重装macos
  • 收到债劵利息会减少吗
  • 网线插上还是显示红叉
  • uniapp微信小程序头像获取与服务器对接
  • 一般纳税人什么情况下可以开3%的税率
  • 小规模年底税金怎么做账
  • 转出未交增值税和未交增值税区别
  • 穆尔官网
  • 若依框架使用教程
  • 毛利率为负也可以投资吗
  • springmvc执行流程简单
  • 购买车辆的进项税怎么抵扣
  • 购物赠品的相关法律
  • 开办费新会计准则
  • 退税没有退的部分怎么做账
  • 织梦cms可以商用吗
  • day10-Tomcat02
  • Win2008中SqlServer2008 无法打开错误日志文件导致无法启动的解决方法
  • php图片格式转换
  • 小规模纳税人注册流程
  • 工会经费和工会会费的区别与联系
  • 进口贴息资金
  • 公司交社保有什么用处
  • 房地产开发成本测算套表(全过程)
  • 应收账款的金额包括增值税吗
  • 本年利润到年末还有余额吗
  • 分期付款购无形资产怎么入账?
  • 销售做不动 应该做什么
  • 货拉拉除了运费还要出钱吗
  • 账面银行存款余额与实际余额不符
  • 新组建的公司该怎样开展工作
  • mysql的慢查询日志怎么查看
  • 联想yogas
  • windows1021h1新功能
  • win8系统桌面图标
  • 写出javascript的数据类型
  • opengl详解
  • shell脚本转换文件编码
  • Unity3D游戏开发标准教程吴亚峰于复兴人民邮电出版社
  • node创建服务
  • toolkit:eclipse导入下载好的android系统源码
  • unity资源管理机制
  • js 获取图片大小
  • JavaScript中Number.MAX_VALUE属性的使用方法
  • javascript基础入门视频教程
  • 山西一女子实名举报局长
  • 泰兴市地方税务局
  • 税务局发票邮寄需要多久
  • 服务费交哪个税目的印花税
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

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

    友情链接: 武汉网站建设