PHP延迟静态绑定使用方法实例解析

这篇文章主要介绍了PHP延迟静态绑定使用方法实例解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下

PHP的继承模型中有一个存在已久的问题,那就是在父类中引用扩展类的最终状态比较困难。我们来看一下代码清单5-11中的例子。

代码清单5-11 意想不到的继承

<?php
class ParentBase {
static $property = ‘Parent Value’;
public static function render() {
return self::$property;
}
}
class Descendant extends ParentBase {
static $property = ‘Descendant Value’;
}
echo Descendant::render();
Parent Value

在这个例子中,render()方法中使用了self关键字,这是指ParentBase类而不是指Descendant类。在ParentBase::render()方法中没法访问$property的最终值。为了解决这个问题,需要在子类中重写render()方法。

通过引入延迟静态绑定功能,可以使用static作用域关键字访问类的属性或者方法的最终值,如代码所示。

<?php
class ParentBase {
static $property = ‘Parent Value’;
public static function render() {
return static::$property;
}
}
class Descendant extends ParentBase {
static $property = ‘Descendant Value’;
}
echo Descendant::render();
Descendant Value

通过使用静态作用域,可以强制PHP在最终的类中查找所有属性的值。除了这个延迟绑定行为,PHP还添加了get_called_class()函数,这允许检查继承的方法是从哪个派生类调用的。以下代码显示了使用get_called_class()函数获得当前的类调用场景的方法。

使用get_called_class()方法

<?php
class ParentBase {
public static function render() {
return get_called_class();
}
}
class Decendant extends ParentBase {}
echo Descendant::render();
Descendant

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持脚本之家。

来源:脚本之家

链接:https://www.jb51.net/article/194985.htm

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至253000106@qq.com举报,一经查实,本站将立刻删除。

发布者:SEO优化专员,转转请注明出处:https://www.chuangxiangniao.com/p/899181.html

(0)
上一篇 2025年1月4日 01:31:10
下一篇 2025年1月4日 01:31:37

AD推荐 黄金广告位招租... 更多推荐

相关推荐

  • php实现记事本案例

    这篇文章主要为大家详细介绍了php实现记事本案例,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下 本文实例为大家分享了php实现记事本的具体代码,供大家参考,具体内容如下 记事本案例 要求:1)页面上有一个文本…

    2025年1月4日
    100
  • PHP实现限制域名访问的实现代码本地验证

    这篇文章主要介绍了PHP实现限制域名访问的实现代码,如果不是允许的域名不让使用,然后让客户购买认证即可,但本地验证加密一般都可以被破解,建议用远程验证,都收费了不差这点钱了,需要的朋友可以参考下 用PHP编写好的源码,如果不想被其它人直接利…

    编程技术 2025年1月4日
    100
  • PHP$O00OO0=urldecode&eval 解密记一次商业源码的去后门

    最近看到如下的php代码$O00OO0=urldecode(“%6E1%7A%62%2F%6D%615%5C%76%740%6928%2D%70%78%75%71%79%2A6%6C%72%6B%64%679%5F%65%68%…

    编程技术 2025年1月4日
    100
  • PHP反射基础知识回顾

    这篇文章主要介绍了PHP 反射的相关资料,帮助大家回顾和理解PHP的相关知识,感兴趣的朋友可以了解下 反射是编程语言的高级特性,能在运行时让代码有感知代码的能力。PHP自5起支持反射机制,其是各种OOP框架底层实现的重要支撑。 反射 从一个…

    2025年1月4日
    100
  • PHP获取类私有属性的3种方法

    这篇文章主要介绍了PHP获取类私有属性的3种方法,帮助大家更好的理解和使用php,感兴趣的朋友可以了解下 今天在推上看到一条获取PHP类私有属性的推文,感觉很有意思: 顺着推文联想,还有其他方式吗?经过自己的测试及网上答案,总结出三种方法:…

    编程技术 2025年1月4日
    100
  • php实现图片压缩处理

    这篇文章主要为大家详细介绍了php实现图片压缩处理,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下 本文实例为大家分享了php实现图片压缩处理的具体代码,供大家参考,具体内容如下 说明 在项目中,经常会遇到在前…

    编程技术 2025年1月4日
    100
  • 如何在PHP中读写文件

    这篇文章主要介绍了如何在PHP中读写文件,帮助大家更好的理解和学习php,感兴趣的朋友可以了解下 在PHP中读写文件,可以用到一下内置函数: 1.fopen(创建文件和打开文件) 语法: fopen(filename,mode) filen…

    编程技术 2025年1月4日
    100
  • php autoload使用方法及步骤详解

    这篇文章主要介绍了PHP autoload使用方法及步骤详解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 我们知道在PHP4里面,当我们使用一个类的时候,必须将该类所以文件使用inclu…

    编程技术 2025年1月4日
    100
  • PHP数组访问常用方法解析

    这篇文章主要介绍了PHP数组访问常用方法解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 1、如果使用的是索引方式的数组可以使用for循环来实现如下: for ( $i = 0; $i …

    编程技术 2025年1月4日
    100
  • XAMPP升级PHP版本实现步骤解析

    这篇文章主要介绍了XAMPP升级PHP版本实现步骤解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 XAMPP(Apache+MySQL+PHP+PERL)是一个功能强大的建站集成软件包…

    编程技术 2025年1月4日
    200

发表回复

登录后才能评论

联系我们

156-6553-5169

在线咨询: QQ交谈

邮件:253000106@qq.com

工作时间:周一至周五,9:30-18:30,节假日休息

联系微信