如何覆盖sonataNotificationBundle的Sonata \ NotificationBundle \ Iterator \ MessageManagerMessageIterator类?

时间:2013-08-06 07:59:18

标签: php symfony symfony-sonata

Sonata Notification Bundles backend命令等待传递给命令的迭代次数完成,我希望backend命令只迭代等于可用消息的次数。它应该发送所有消息并退出。

所以我想覆盖Sonata \ NotificationBundle \ Iterator \ MessageManagerMessageIterator类。

我将其复制到Application \ Sonata \ NotificationBundle \ Iterator \ MessageManagerMessageIterator,Application \ Sonata是一个子包,由Sonata在安装时生成。但它仍指向原始的父包类而不使用此类。

迭代器用于,

以下方法中的Sonata \ NotificationBundle \ Backend \ MessageManagerBackend.php类。

/**
 * {@inheritdoc}
 */
public function getIterator()
{
    $types = null !== $this->type ? array($this->type) : array();

    return new MessageManagerMessageIterator($this->messageManager, $types, $this->pause, $this->batchSize);
}

如何覆盖MessageManagerMessageIterator?

1 个答案:

答案 0 :(得分:0)

简单的方法是使用bundle inheritance功能。这不是一个非常干净的解决方案,但它仍然有用。