【问题标题】:PHP GearmanClientPHP Gearman客户端
【发布时间】:2012-06-11 09:07:03
【问题描述】:

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

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

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

【问题讨论】:

    标签: php gearman


    【解决方案1】:

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

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

    至于访问运算符的问题(如果我理解正确的话——是使用对象回调还是类回调),我猜答案是——这取决于。如果您的回调将提供有关特定对象的数据,那么该对象接收回调是有意义的。如果它是您的应用将仅存储在 DB 中的通用消息,那么静态类接口也可以做到这一点。

    【讨论】:

      【解决方案2】:

      当然可以。只需将其包裹在闭包中即可:

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

      【讨论】:

      • 只要方法是公开的。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-03-25
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多