0

我想(需要)在 Zend Framework 1.11 中使用 Symfony EventDispatcher 我在 zf 的引导程序中加载了 EventDispatcher...

public function run()
    {
        require APPLICATION_PATH . 
                '/../library/Symfony/Component/EventDispatcher/EventDispatcher.php';
        $dispatcher = new \Symfony\Component\EventDispatcher\EventDispatcher();

        $dispatcher->dispatch("bootstrap.prerun", null);

        parent::run();

        $dispatcher->dispatch("bootstrap.postrun", null);

    }

我的问题是,如何在 ZF 控制器中使用它?

感谢您的任何帮助。此致,

4

1 回答 1

0

我正在回复这个问题,因为我的问题是了解如何集成这两个框架,以便我可以让 Symfony 的 EventDispatcher 在我的所有 ZF 应用程序(包括模块)上工作。

这是我的解决方案:在引导程序上..

public function run()
{
    $dispatcher = $this->getResource("Far_Resource_EventDispatcher");

    $dispatcher->dispatch("bootstrap.prerun", null);

    $listener = new DM_Service_StockListener();

    $dispatcher->addListener(
            "equipment.new", 
            array($listener, 'onEquipment') 
            );

    parent::run();

    $dispatcher->dispatch("bootstrap.postrun", null);

}

我为 EventDispatcher 创建了一个资源,以这种方式进行实例化,它可以由引导程序全局访问,并且可以启动具有资源。资源代码为:

class Far_Resource_EventDispatcher extends Zend_Application_Resource_ResourceAbstract
{
    private $_dispatcher = null;

    public function init()
    {
        if ($this->_dispatcher === null ) {
            require APPLICATION_PATH . 
                '/../library/Symfony/Component/EventDispatcher/EventDispatcher.php';

            $dispatcher = new \Symfony\Component\EventDispatcher\EventDispatcher();
        } else {
            $dispatcher = $this->_dispatcher;
        }
        $this->getBootstrap()->eventDispatcher = $dispatcher;

        return $dispatcher;

    }
}

在 application.ini 我设置

pluginPaths.Far_Resource_EventDispatcher = APPLICATION_PATH "/../library/Far/Resource/EventDispatcher.php"
resources.Far_Resource_EventDispatcher = true;

我用这个例子来说明如何创建资源: http ://blog.madarco.net/327/how-to-make-your-own-zend-framework-resource-plugin/

我仍在从事这项工作,但看起来它在第一次测试中运行良好......

于 2012-05-30T21:27:13.143 回答