1

我正在使用 zend 框架 2.2.2 编写一个 PHP 应用程序。

我想知道如何使用 zend 框架 2 来使用 FlashMessanger。

现在我知道可以使用 zf1 使用以下代码获取 Flash Messanger:

        $this->messenger = Zend_Controller_Action_HelperBroker::getStaticHelper('flashMessenger');

如何使用 zf2 获取 flash messenger?

问题是我希望 flash messenger 在我自己的实用程序类中可用,所以我没有可用于从那里获取 messenger 的控制器。

有任何想法吗?

谢谢

4

1 回答 1

2

FlashMessenger 是一个 ControllerPlugin Zend\Mvc\Controller\Plugin\FlashMessenger,这也是使用它最有意义的地方。在我看来,将 Messenger 注入您的“UtilityClasses”听起来有点糟糕,因为这会使响应检查变得更加复杂,控制器也更加臃肿。所以请记住这一点。

但是,可以FlashMessenger进入您想要的任何课程。唯一的问题是,您希望 FM 可用的所有类都必须由 ServiceManager 调用。您的 ServiceFactories 将如下所示:

// Module#getServiceConfig() 
return array('factories' => array(
    'MyServiceClass' => function($serviceLocator) {
        return new MyService(
            $serviceLocator->get('controllerpluginmanager')->get('flashmessenger')
        );
    }
));

当然,如果您希望注入全部ServiceLocator内容(不建议),您可以重新编写它以在您的 ServiceClass 中使用 setter-injection 甚至惰性获取器。

于 2013-08-19T05:26:05.670 回答