在 php 5.3 之前伪造后期静态绑定

2023-11-21

我需要一个继承的静态函数“调用”来调用另一个已被重写的静态函数“内部”。我可以通过后期静态绑定来做到这一点,但我的主机还没有 php5.3,所以我需要解决它。

class ClassA{
    static function call()
    {
        return self::inner();
    }

    static function inner(){
        return "Class A";
    }   
}

class ClassB extends ClassA{
    static function inner(){
        return "Class B";
    }
}

echo "<p>Class A = " . ClassA::call();
echo "<p>Class B = " . ClassB::call();

我希望输出是:
A级=A级
B 级 = B 级

但它是什么:
A级=A级
B 级 = A 级

我的直觉告诉我,我应该能够在 call() 中编写一些内容来检测调用“call()”时引用的对象。因此,它不是 self::inner() ,而是类似于 calledclass::inner() 的东西。检测要从原始方法调用中调用的 inner() 的正确版本。


如果性能不是问题,您可以使用 debug_backtrace() 来查找被调用的类:

$bt = debug_backtrace();
return get_class($bt[1]['object']); 

http://php.net/manual/en/function.debug-backtrace.php

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

在 php 5.3 之前伪造后期静态绑定 的相关文章

  • 如何在laravel中注册后自动登录

    我在 laravel 中注册用户时遇到问题 user假设是包含所有数组元素的数组 同时自动登录以下代码结果false 数据库中保存的密码是hash make password user id this gt user model gt ad
  • 使用 php-ews(Exchange Web 服务)在特定日期后获取电子邮件

    在我的 PHP 脚本中 我需要弄清楚如何检索指定消息 ID 之后或特定日期之后的所有电子邮件 两者都可以 我只需要检索自上次抓取收件箱以来的新电子邮件 这个收件箱每天收到数千封电子邮件 而且我在 30 天内无法删除任何电子邮件 对于初始导入
  • setcookie with expire=0 浏览器关闭后不会过期

    我使用setcookie来制作一个过期 0的cookie 从 PHP 文档来看 link http php net manual en function setcookie php cookie 过期的时间 这是一个 Unix 时间戳 所以
  • Lisp 函数如何记住这段代码中的状态?

    我从网站上看到一段代码http www ccs neu edu home shivers newstyle html http www ccs neu edu home shivers newstyle html gt defun elem
  • PHP - 如何获取主要 HTML 内容,例如 Firefox 中的阅读器模式

    在 android Firefox 应用程序和 safari iPad 中 我们只能通过 阅读器模式 阅读主要内容 阅读更多 http support mozilla org en US kb how enable reader mode
  • PHP WCF 集成

    是不是如果我想支持php客户端访问我的服务 我必须有一个基本的http端点 这是因为php仍然只支持soap 1 1吗 据我所知 自从我使用 PHP 以来已经两年了 情况仍然如此 如果客户端应用程序将使用 PHP 的内置 SoapClien
  • PDO PHP 连接,致命错误

    我的连接类 firstcode php class DB functions public db function construct try db new PDO mysql localhost dbname xxx charset ut
  • 分页显示所有其他页面上第 1 页的相同帖子

    我最近在创建即将发生的事件列表时得到了很多帮助 请参阅此处显示即将举行的活动 包括今天的活动 https stackoverflow com questions 17343615 showing upcoming events includ
  • 将 cookie 设置为在当天结束时过期

    我想设置一个 cookie 并让它在一天结束时过期 这有效 但 24 小时后过期 setcookie route upgrade voted true time 86400 这不起作用 setcookie route upgrade vot
  • 如何在 Windows 上安装 Zend 框架

    安装 Zend Framework 就是这么简单 是的 对 好吧 我正在写一本初学者的书 有一件不太详细的事情是最重要的部分 安装该死的东西 浏览了几个小时的快速入门指南后 它只说 下载 Zend 添加包含目录 bla bla 然后就完成了
  • 如何在codeigniter中将上传图片比例限制为16:9?

    这是我用来上传图像的代码 this gt load gt library upload ext pathinfo file name PATHINFO EXTENSION img name now ext imgConfig upload
  • 带倒计时的php循环

    假设我从 400 开始计数器 我将如何执行一个向后运行直到 0 的 foreach 循环 伪代码 i 400 foreach SOMETHING do stuff i for i 400 i gt 0 i do stuff 其他方法 i 4
  • ASP.NET MVC:这个业务逻辑应该放在哪里?

    我正在开发我的第一个真正的 MVC 应用程序 并尝试遵循一般的 OOP 最佳实践 我正在将控制器中的一些简单业务逻辑重构到我的域模型中 我最近一直在阅读一些内容 很明显我应该将逻辑放在域模型实体类中的某个位置 以避免出现 贫血域模型 反模式
  • php - 解析html页面

    div divbox div p para1 p p para2 p p para3 p table class table tr td td tr table p para4 p p para5 p 有人可以告诉我如何解析这个 html
  • 字符串相似度的算法(比Levenshtein和similar_text更好)? php, Js

    在哪里可以找到比 levenshtein 和 phpimilar text 方法更准确地评估错误字符的拼写的算法 Example similar text jonas xxjon similar echo similar returns 6
  • PHP 表单 - 带验证蜜罐

    我有以下内容 效果很好 但对垃圾邮件机器人开放 我想放入蜜罐 而不是验证码 下面的代码适用于验证姓名 电子邮件 消息 但我无法让它与蜜罐一起工作 任何人都可以查看 蜜罐 代码并告诉我如何修复它吗 我希望表单给出 success2 不允许垃圾
  • 矩形超出边界是什么意思

    PPB Graphics2D PaintImageData 矩形超出界限是什么意思 我几乎在我检查的每一段代码中都看到了它 最新的代码是 define my consumer key define my consumer secret oa
  • PayPal 网关已拒绝请求。安全标头无效(#10002:安全错误 Magento

    在 magento 中增加 PayPal 预付款 我已填写 magento admin 中的所有凭据 但是当我进入前端并单击 pay pal 按钮时 它给出了 PayPal 网关已拒绝请求 安全标头无效 10002 安全错误 我用谷歌搜索了
  • PHP更改小数点分隔符

    在某些情况下 PHP 会在操作后更改小数点分隔符 下面是一个示例 为什么小数点分隔符变成 这是一个多语言网站 在西班牙语版本中 区域设置设置为西班牙语 es ES 小数点分隔符为 这就是为什么正在改变 解决方案是强制 LC NUMERIC
  • 如何从日期中查找该月的最后一天?

    如何在 PHP 中获取该月的最后一天 Given a date 2009 11 23 我要2009 11 30 并给出 a date 2009 12 23 我要2009年12月31日 t返回给定日期所在月份的天数 请参阅的文档date ht

随机推荐

  • 使用 Google API 发送邮件时出错 - “'原始'RFC822 有效负载消息字符串或通过 /upload/* 需要 URL 上传消息”

    我正在尝试通过 python 中的 Google API 发送消息 并且正在尝试运行几乎直接从谷歌示例页面 def CreateMessage sender to subject message text message MIMEText
  • 如何在等距平铺地图中变换鼠标位置?

    因此 我设法自己编写了第一部分 算法 来计算每个图块在绘制此地图时应放置的位置 见下文 然而 我需要能够将鼠标位置转换为适当的单元格 而且我几乎要抓狂了 因为我无法找出如何从鼠标位置获取单元格的方法 我担心的是 它涉及一些相当高的数学知识
  • 使用 matplotlib 对极坐标图中的“单元格”进行着色

    我有一堆规则分布的点 n 6 r 1 8 每个点的值都在 0 1 中 我可以使用 matplotlib 中的值绘制它们 polar thetas rs c values 但是 我不想只有一个微薄的小点 而是用与该点的值相对应的颜色来对相应的
  • 使用 out 参数反思静态重载方法

    我在通过反射调用带有输出参数的重载静态方法时遇到一些问题 并且希望得到一些指针 我正在寻找动态创建类似的类型System Int32 or System Decimal 然后调用静态TryParse string out x 方法就可以了
  • Python Pandas - 查找具有最大聚合值的连续组

    我有一个包含日期时间和整数的数据框 import numpy as np import pandas as pd df pd DataFrame df dt pd date range 2017 01 01 12 00 2017 01 01
  • 如何在 PostgreSQL 中以编程方式查找继承表?

    我有一个 PostgreSQL 8 3 数据库 其中使用了表继承 我想获取所有表及其模式名称的列表 该模式名称是使用查询从基表继承的 我们有什么办法可以使用 PGSQL 得到这个吗 由于您使用的是旧版本的 PostgreSQL 您可能必须使
  • AutoMapper 无法将 enum 转换为 nullable int?

    我收到 AutoMapperMappingException 异常 引发了 AutoMapper AutoMapperMappingException 类型的异常 gt System InvalidCastException 从 Dummy
  • OpenGL 将纹理映射到球体

    我有 OpenGL 程序 我想用地球位图来纹理球体 我在 Blender 中准备了网格并将其导出为 OBJ 文件 程序正确加载适当的网格数据 顶点 uv 和法线 和位图 我已经检查了它与骨骼位图的纹理立方体 我的程序是纹理球体 但不正确 或
  • 接口的所有方法都是抽象的吗?

    我看到大多数地方都写着 All of the methods in an interface are abstract 但接口也可能包含default methods and static methods方法体存在于默认方法和静态方法中 那
  • 哪个 PDF 生成 API (Java) 支持古吉拉特语字体?

    我尝试过 iText PDFBox 和 Oracle Forms 我还成功地使用 iText 生成了古吉拉特语 PDF 文档 但是 不幸的是它没有生成古吉拉特语 UTF 8 语言的正确字体 我的项目是 jdk 1 4 这是强制使用的 所以
  • 按具有最大列值的记录过滤 Django 查询

    有没有一种简单的方法可以根据列中具有最大 最小值的记录来过滤 Django 查询 我本质上是在问these 问题 但是在 Django 的 ORM 的特定上下文中 e g 假设我有一个模型旨在存储每个人电话号码的历史值 class Pers
  • 将 TabControl ItemsSource 绑定到 ViewModel 集合

    由于某种原因 我很难得到我的TabControl绑定时正确显示ItemsSource to a ObservableCollection视图模型 我的设计基于此处找到的教程 http msdn microsoft com en us mag
  • Resharper 单元测试运行程序找不到内容文件

    我有一些测试依赖于我标记为 内容 和 始终复制 的一些文件 我使用 DeploymentItem 属性来确保在 VS 外部运行 mstest 时将它们复制到输出目录 然而 当在 VS 中使用 Resharper 测试运行器时 这些文件永远不
  • F# - int 类型与 unit 类型不兼容

    对于函数式语言来说相当陌生 但我正在使用大量 F 维护别人的代码 谁能对此提供一些见解 let mtvCap Rendering MTViewerCapture mtViewer mtvCap GetCapture mtvCap ToWpf
  • SQL 过程中的打印语句会影响性能吗?

    我正在使用 SQL Server 程序并且我有使用的习惯Print存储过程中的语句用于区分过程代码 我的数据库中有近 200 250 个过程 print 语句应该影响性能吗 我正在开发多用户 Windows 应用程序 我发现在我的桌面上运行
  • ASP.NET MVC 从 URL 获取路由值

    我想计算出该路线的价值是多少UrlReferrer在控制器的动作中 我无法弄清楚传入的 URL 在 MVC 管道的哪一部分被转换为 RouteValues 我想要实现的目标与此接近 你需要打电话RouteTable Routes GetRo
  • 调用 Node.js fork 时处理“找不到模块”错误

    如何捕获调用不存在的文件的 fork 错误 var cp require child process var fk cp fork missing file js 喷出 module js 340 throw err Error Canno
  • Next.js 默认情况下是同站点来源,但我仍然可以访问它

    我想知道如何保护我的 api 路由 文档说 api 路由默认是同站点源 API 路由不指定 CORS 标头 这意味着它们仅在默认情况下是同源的 您可以通过使用 cors 中间件包装请求处理程序来自定义此类行为 Next js 文档 但是 如
  • Android DrawerLayout 无法与 ViewPager 一起使用?

    我已经实施了浏览器里面一个抽屉布局它工作正常 但抽屉菜单列表视图无法正确显示 操作栏将显示在 ViewPager 选项卡下方 希望下图能给您一个想法 我正在使用动作条夏洛克图书馆 如何在操作栏正下方显示抽屉菜单列表视图 我已经尝试过了 活动
  • 在 php 5.3 之前伪造后期静态绑定

    我需要一个继承的静态函数 调用 来调用另一个已被重写的静态函数 内部 我可以通过后期静态绑定来做到这一点 但我的主机还没有 php5 3 所以我需要解决它 class ClassA static function call return s