PHP 子类的神奇方法 __call

2024-03-21

我的情况最好用一些代码来描述:

class Foo {
    function bar () {
        echo "called Foo::bar()";
    }
}

class SubFoo extends Foo {
    function __call($func) {
        if ($func == "bar") {
            echo "intercepted bar()!";
        }
    }
}

$subFoo = new SubFoo();

// what actually happens:
$subFoo->bar();    // "called Foo:bar()"

// what would be nice:
$subFoo->bar();    // "intercepted bar()!"

我知道我可以通过重新定义来让它发挥作用bar()(以及所有其他相关方法)在子类中,但就我的目的而言,如果__call函数可以处理它们。它只会让事情变得lot更整洁、更易于管理。

这在 PHP 中可能吗?


__call() https://www.php.net/manual/en/language.oop5.overloading.php#language.oop5.overloading.methods仅当未找到该函数时才调用,因此您的示例(如所写)是不可能的。

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

PHP 子类的神奇方法 __call 的相关文章

  • 使用 Graph API 删除 facebook 帖子 - 无法正常工作

    我使用以下命令在我的 Facebook 页面上发布消息 attachment array access token gt access token message gt This is a test Message 4 name gt Th
  • 解析错误:语法错误,意外的“”(T_ENCAPSED_AND_WHITESPACE)[重复]

    这个问题在这里已经有答案了 完整错误 解析错误 语法错误 意外的 T ENCAPSED AND WHITESPACE 需要标识符 T STRING 或 变量 T VARIABLE 或数字 T NUM STRING 它说错误出现在第 12 行
  • 如何使用 zend 导入 CSV

    如何使用 zend 框架导入 CSV 文件 我应该使用 zend file transfer 还是有任何我必须研究的特殊类 另外 如果我使用 zend file transfer 是否有任何特殊的 CSV 验证器 你不必使用任何 zend
  • Stripe API - 代理后面的 PHP Curl 请求

    我正在尝试使用 php 和curl 在代理后面向 stripe api 发出请求 如果我不在代理后面 则以下内容有效 ch curl init curl setopt ch CURLOPT URL https api stripe com
  • 图像上的文字

    是否可以在 php 中动态地将文本放置在图像上 然后将其发送到 rss feed 是的 可以使用GD http www php net gd函数或图像魔术师 http www php net imagemagick功能 具体取决于您的服务器
  • 递归BBCode解析

    我正在尝试解析脚本中的 BBCode 现在 它可以无缝工作 直到我尝试缩进不仅仅是粗体或下划线的 BBCode 例如剧透 网址 字体大小等 然后它就会搞砸 这是我的代码 function parse bbcode text global d
  • 合并两个数字键关联数组并保留原始键

    我有两个这样的数组 array 11 gt 11 22 gt 22 33 gt 33 44 gt 44 array 44 gt 44 55 gt 55 66 gt 66 77 gt 77 我想组合这两个数组 使其不包含重复项并保留其原始键
  • 如何将 imagecropauto() 与 IMG_CROP_TRANSPARENT 一起使用?

    当我尝试裁剪图像的透明区域时 它会保持原始大小 并且透明区域会变成黑色 如果我运行这段代码
  • 使用 PHP DOMDocument 更改标签属性值

    我想用 PHP DOMDocument 更改标签属性的值 例如 假设我们有这行 HTML a href http foo bar Click here a 我将上面的代码加载到 PHP 中 如下所示 dom new domDocument
  • 使用 PHP SDK 获取页面的最新 Facebook 帖子

    以下代码位于名为 facebook posts php 的文件内 我从索引文件中调用该文件 如下所示 然而 这段代码放到哪里 却没有任何反应 因此 成功和捕获错误都不会返回错误 正如我所见 我尝试过绝对网址 但这也不起作用 我隐藏了 api
  • Zend Framework 2 在视图中显示视图

    我有两个模块管理和登录 我想在管理视图 index html 中显示登录视图 login phtml 我在管理模块indexAction控制器中有以下内容 public function indexAction login new Logi
  • PDO::PARAM_FLOAT 不存在,为什么?

    我想知道为什么 PDO PARAM FLOAT 不存在以及什么可以替代它 没有 可能是由于隐含的舍入问题 只需使用PDO PARAM STR并使用将浮点数转换为字符串strval float or string float
  • PHP上传问题

    我使用了一些脚本来开始在我的开发计算机上上传文件 问题是 尽管此操作预期很容易 但每当我尝试上传图像时 Apache 似乎都会超时 上传设置为On和tmp目录设置在php ini 我尝试上传主要内容gif来自谷歌 一个8 36KB图像 它应
  • PHP mysql_num_rows 死错误

    我想创建一个页面 用户可以在其中添加他们的信息 我已经创建了该页面 但我真正的问题是代码 我有一些问题 这部分代码
  • PHP:从 POP3 或 IMAP 下载传入电子邮件,解析它,并将其标记为服务器上的已读/删除

    我正在尝试将传入电子邮件添加到我的网络应用程序中 它是基于 CodeIgniter 和 PHP 构建的 据我所知 我还没有找到任何 CI 库来执行此操作 我想要做的是有一个控制器通过 POP3 或 IMAP 连接到我的邮箱 并检索消息 解析
  • 从数据库中给定时间起经过的时间

    我有一个 HTML 表 其中包含从数据库中提取的记录 我正在使用 PHP MySQL 我的表中名为 Timer 的列未从数据库中检索 我需要在此处显示经过的时间 从数据库中的特定时间开始 例如 假设现在的时间是2013年2月21日下午6点2
  • JQuery 验证不起作用

    我有一种表单 其中一个输入类型的值为 名字 但这可以在 onfocus 函数上更改我想验证此输入字段 如果它为空白或 名字 我有两个 jQuery 文件jquery 1 4 2 min js jquery validate pack js
  • 使用 Laravel dusk 仅迁移一次

    根据到 数据库测试 文档 https laravel com docs 5 4 database testing resetting the database after each test我可以在每次测试后重置数据库 第一个选项 第二个选
  • PHP filesize() 适用于除一个文件之外的所有文件,给出 stat failed 错误

    我正在编写一个 PHP 页面 该页面通过抓取现有 HTML 页面来生成播客提要 一切正常 但我的 mp3 文件之一出现 filesize stat failed 错误 据我所知 该文件没有损坏 并且播放得很好 我还将文件重新上传到服务器 它
  • ZF2 - 从路线生成 URL

    我无法弄清楚在 zend 2 中从我想要的任何地方生成 Url 我得到了动作和控制器 所以我尝试这个 this gt url myControllerName array action gt myActionName 但这返回一个对象 我只

随机推荐

  • 如何截断 .net 中的日期?

    除了 DateTime ctor new DateTime year month day 之外 还有其他方法来截断日期吗 日期时间 日期 http msdn microsoft com en us library system dateti
  • 如何将更多参数传递给令牌端点 Web api 2

    我需要将更多参数传递给令牌端点 如下所示 grant type 密码 用户名 Alice 密码 密码123 peop1 值 Prop2 值 获取令牌 我如何传递这些以及我可以在服务器上哪里获取它们 OAuth2 资源所有者密码流定义了这些参
  • 查找给定文本中的子字符串.. C 程序

    char substring char text int position int length int i j 0 char temp for i position 1 i
  • 无法以json格式将数据从php添加到jqGrid

    你好 StackOverFlow 国家 我正在尝试向 jqGrid 添加信息 该信息是从 MySQL 数据库检索的 我有两个文件 gt index html 和 data php 都在同一目录中 index html 来源 gt
  • SQL |返回最小值 |动态多行

    我需要创建一个查询 仅返回特定列中具有最小值的行 我有这个结果 示例 Name Description Order Name1 A 1 Name1 B 2 Name1 C 3 Name2 A 1 Name2 B 2 Name2 C 3 我想
  • 按字典顺序比较字符串

    我认为如果我在 C 中使用 gt 和 if aa gt bz cout lt lt Yes 这不会打印任何内容 这就是我需要的 但是如果我输入 if aa gt bzaa cout lt lt Yes 这将打印 是 为什么会发生这种情况 或
  • 将 MySQL 列值设置为 NULL 而不是 0 或 '' 对磁盘空间的影响

    我试图了解处理大部分为空的列的最佳方法磁盘空间 and 指数表现 将所有空位放入 NULL 与 对于 varchar text 与 0 对于 int 之间有区别吗 Thanks 不 使用 NULL 不会比空占用更少的空间VARCHAR or
  • Facebook 分享“可点击”网址链接问题

    我在 Facebook 中遇到可点击 url 链接的问题 正如您所看到的 nr 1 不可点击 但 nr 2 和 3 可以点击 有时它是可点击的 有时则不可点击 随机 我想要的是所有共享链接都不像 nr 1 那样 可点击 我怎样才能解决这个问
  • jQuery .slideUp 问题

    slideDown 工作正常 当第二次单击链接时 会再次出现 slideDown 动画 而不是 slideUp 请帮我一下 谢谢 document ready function toggleButton click function if
  • mysqldump 命令中的语法错误

    mysqldump mydatabase lt my path to sqlfile sql 这是我下达的命令 这个语法错误的原因可能是什么 我很确定它是正确的 我正在尝试将 sql 文件加载到我的数据库中 use mysqldump u
  • Scrapy:遇到302时如何停止请求?

    我正在使用 Scrapy 2 4 从 start urls 列表中抓取特定页面 这些 URL 中的每一个可能都有 6 个结果页面 因此我请求全部结果页面 然而 在某些情况下 只有 1 个结果页面 所有其他分页页面都会返回 302 到 pn
  • 在 jQuery 滚动上淡入淡出 div

    我有一些 div 本质上只是彩色矩形来帮助可视化 当我向下滚动页面时 每个矩形应该fadeIn or fadeOut取决于滚动条的位置 不幸的是 它吓坏了 褪色更像是痉挛的频闪灯 我认为最好通过滚动方式通过每个元素的距离来确定不透明度级别
  • ORA-00904: “ID”: 无效标识符

    我正在尝试创建一个带有外键的表 我不断得到ORA 00904错误 我究竟做错了什么 是因为外键的表还没有创建吗 CREATE TABLE ingredients ingredient id number 2 0 ingredient VAR
  • 如何与OBD-II设备通信

    有OBD II类似设备http www rczd com c 2015 Car Diagnostic Tools 0223 41193 html http www rczd com c 2015 Car Diagnostic Tools 0
  • jQuery 验证不工作

    我的代码似乎有问题 validate不起作用 但所有文档都已连接并且工作正常 HTML div h1 Site Name Quote h1 p class quoteError p p class step p div
  • 我可以制作用户特定的 gitignore 文件吗?

    我想更改 gitignore 但并不是团队中的每个人都希望这些更改 用户如何拥有自己特定的 git 忽略文件 您可以使用以下命令创建自己的 gitignore git config global core excludesfile HOME
  • MySQL创建表时出现错误1022

    MySQL Workbench 使用以下 SQL 来创建表 CREATE TABLE IF NOT EXISTS mydb errors reports error id INT NOT NULL report short VARCHAR
  • 如何在NetBeans上编辑库源文件?

    我正在做基于 SSJ Java 中的随机模拟 库的 JAVA 项目 在我的项目中 我已按照所需步骤导入 SSJ 库文件和源文件 当查看项目的库分支中的 SSJ 库文件时 仅显示类文件 但是当我打开它们时 我可以查看源代码 以前无法查看 因为
  • 拆分按钮下拉菜单设置操作 url

    我正在尝试实施Split button dropdowns在我的网络应用程序中 我找不到在主应用程序上设置 Url 的方法Action button
  • PHP 子类的神奇方法 __call

    我的情况最好用一些代码来描述 class Foo function bar echo called Foo bar class SubFoo extends Foo function call func if func bar echo i