位置: 编程技术 - 正文

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

  • 一般纳税人劳务费税率是多少
  • 先到发票后到商品怎么入账
  • 自产和外购的视频区别
  • 海关进口发票可以退税吗
  • 先付款后开票是预付吗
  • 进项票错了但是销项票开出去了怎么办
  • 外贸企业的会计
  • 企业所得税税率多少
  • 长期借款业务的思维导图
  • 矿泉水资源税计税依据
  • 在建工程的利息支出
  • 出售股票会计怎么做分录
  • 企业财产保险费率的影响因素
  • 招聘发票可以抵扣吗
  • 上期留抵税额计算
  • 五险一金缴税基数
  • 购买防疫物资计划
  • 辅助生产成本科目月末有余额吗
  • 预收账款的会计编码是多少?
  • 食堂伙食费需要开票吗
  • 计算应纳税所得额时可以扣除的项目有
  • 无法删除文件提示怎么办
  • 住房公积金如何使用
  • 存货损失进项税
  • 如何修复win7系统引导
  • PHP:bzdecompress()的用法_Bzip2函数
  • 增值税有哪些类型的税种
  • PHP:mcrypt_get_cipher_name()的用法_Mcrypt函数
  • 成功解决冲突的能力英语
  • 编译和链接的区别是什么
  • 产成品和库存商品两个一级科目怎么填
  • 收到的免税苗木发票必须当月抵扣么
  • 连通函数
  • 固定资产怎么进行无形资产清理的
  • 哪些情况下可以使用食品添加剂
  • 差旅费分摊到各部门
  • 银行卡频繁小额转账
  • 增值税达不到起征期
  • 印花税凭证名称如何选择
  • 扣税8%
  • 所得税季报中的营业收入包括营业外收入吗
  • 简易计税差额抵扣
  • 什么情况纳税
  • 房租没有发票如何处理
  • 什么是明细分类帐
  • 医院销售药品是否缴纳增值税
  • 对公转账个人垫付怎么写
  • 销售折让的红字信息申请表怎么做
  • 代开发票取得的收入如何入账?
  • 暂估入账错误了怎么办
  • 分包工程 税务 账务处理
  • 两笔不同业务能转账吗
  • 分公司利润如何纳税
  • 库存商品盘点流程
  • 小规模公司怎样添加员工
  • 购置成本由什么构成
  • 数据表的联接
  • 如何修改sqlserver中sa用户的密码
  • mysql5.5.62安装配置教程
  • drop,truncate与delete的区别
  • win7怎么免费升级win11
  • win7精简版安装net4.0
  • centos 虚拟化
  • win8如何切换用户登录
  • Win10计算机管理该文件没有与之关联的应用
  • win7能玩的老游戏
  • javascript模块化规范有哪些
  • firefox怎样调整为中文
  • python中random模块用法
  • 批处理删除除了某个文件外的所有文件
  • javascript高级程序设计第三版
  • JavaScript fontcolor方法入门实例(按照指定的颜色来显示字符串)
  • android 自定义
  • 不错的二本院校有哪些
  • flask框架下使用scrapy框架
  • 基础的十进制按什么来算
  • 道路运输业属于工贸行业吗
  • 长安cs752016款2.0手动
  • 首问责任制的概念
  • 2010年末实现净利润390万,宣告发放现金股利40万,在计算本年未分配利润时,是否要减掉这40万?
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

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

    友情链接: 武汉网站建设