PHP GearmanClient

时间:2012-06-11 09:07:03

标签: php gearman

我正在研究Gearman客户端工作者脚本。我们可以将Gearman回调方法声明为受保护或私有吗?即

$this->gearmanClient->setCompleteCallback(array($this, 'JobComplete'));
$this->gearmanClient->setFailCallback(array($this, 'JobFailCallBack'));

什么是与'JobComplete'方法等一起使用的最佳访问运算符?

2 个答案:

答案 0 :(得分:3)

在PHP中,私有/受保护的回调只有在从正确的上下文调用时才可访问(例如,在有权访问这些回调的类中) - 请参阅here进行讨论。

在你的情况下,GearmanClient类将无法访问回调(除非你做了一些非常奇怪的抽象)。所以答案是否定的,你不能。

至于访问操作符问题(如果我理解正确 - 是否使用对象回调或类回调),我想答案是 - 它取决于。如果您的回调将提供有关特定对象的数据,那么该对象接收回调是有意义的。如果它是您的应用程序将只存储在数据库中的通用消息,那么静态类接口也可以这样做。

答案 1 :(得分:1)

当然可以。只需将其包裹在封闭处:

$this->gearmanClient->setCompleteCallback(function () {
    $this->JobComplete();
});