php - 类似于 php 中的回调委托(delegate)函数

标签 php oop

我想在 PHP 中实现类似于 c# 委托(delegate)方法的东西。快速解释一下我正在尝试做的事情:我正在尝试实现一些异步功能。基本上,当底层系统绕过它时,一些资源密集型调用会被排队、缓存和分派(dispatch)。当异步调用最终收到响应时,我希望引发回调事件。

我在想出一种在 PHP 中执行回调的机制时遇到了一些问题。我想出了一个目前可行的方法,但我对此并不满意。基本上,它涉及传递对对象的引用和将用作回调的方法名称(将响应作为参数),然后在需要时使用 eval 调用该方法。由于各种原因,这是次优的,有没有人知道更好的方法?

最佳答案

(除了观察者模式)你也可以使用call_user_func()call_user_func_array() .

如果您将 array(obj, methodname) 作为第一个参数传递,它将作为 $obj->methodname() 调用。

<?php
class Foo {
    public function bar($x) {
        echo $x;
    }
}

function xyz($cb) {
    $value = rand(1,100);
    call_user_func($cb, $value);
}

$foo = new Foo;
xyz( array($foo, 'bar') );
?>

关于php - 类似于 php 中的回调委托(delegate)函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48570/

相关文章:

php - 从 PHP 创建 LESS 变量

c++ - 通过自由函数或成员函数进行扩展的机制

php - PHP 静态方法可以合法地具有 protected 或私有(private)的可见性吗?

javascript - JavaScript 中的属性初始化

javascript - JavaScript 闭包返回的函数的范围和执行上下文

php 表单的 javascript 验证

php - Laravel 获取用户今天和明天生日

javascript - 基于某些变量的 Bootstrap 上下文表

php - 如何在网页中使用session?

oop - kotlin类构造函数参数的默认值类型是什么?