class foo {
    function bar(callable $callable) {
        $callable();
    }

    function printStr() {
        echo "hi";
    }
}

$foo = new foo();
$foo->bar(function () {
    $this->printStr(); // Using $this when not in object context
});

是的,您需要传递一个匿名函数来调用foo类的方法.就像JS一样.如何才能做到这一点?

推荐答案

不如这样吧:

class foo {
    function bar(callable $callable) {
        $callable($this);
    }

    function printStr() {
        echo "hi";
    }
}

$foo = new foo();
$foo->bar(function ($that) {
    $that->printStr(); // Using $this when not in object context
});

演示:https://3v4l.org/VbnNH

在这里,$this作为参数提供给可调用函数.

Php相关问答推荐

如果活动订阅者的购物车中有订阅项目,则在WooCommerce签出中显示通知

PHP如何将ARRAY_MAP与Reset()配合使用

从含有特殊字符的ANSI文本文件中读取数据是在移值,为什么?

MySQLi是否在事务错误时删除保存点(并且仅删除保存点)?

WooCommerce我的帐户:从帖子作者处获取自定义帖子类型帖子ID

在Laravel中为表添加前缀,以将它们逻辑地分组

服务器迁移后无法上载文件-可能存在权限问题

HTAccess重写一些URL,但将所有其他URL发送到另一个页面

获取作者';在WordPress中使用PHP

重命名 WordPress 中现有的自定义分类法名称和标签

用于更新 WooCommerce 管理产品列表中库存数量的自定义输入字段

在 WooCommerce 管理变量产品中启用其他变体图像

在 PHP 8.2 中使用 PHP Spreadsheet 和 CodeIgniter 3 导出 Excel 时出错

Laravel 路由参数中的 ":" 是什么?

PHP删除具有相同键的项目,除了具有最低值的项目

从 CSV 文件 seeder 数据库时的额外行

使用 GROUP_CONCAT 规范化/转置来自查询的数据

如何在 Laravel 中验证多个输入?

Laravel 响应 html 默认页面忽略控制器

如何在字符串constant-string-NUMBER-*中获取 NUMBER?