2012-06-11 40 views
0

我正在使用Gearman客户端工作者脚本。我们能否将Gearman回调方法声明为protected或private?即PHP GearmanClient

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

什么是与“JobComplete”方法等使用最好的接入运营商?

回答

3

在PHP中,如果从正确的上下文中调用private/protected回调(例如,在可访问这些回调的类中),请参阅here进行讨论。

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

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

+0

感谢您的回复 – Ravish

1

当然可以。只是围绕关闭包装:

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

提供的方法是公开的。 –