我想在 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/