1

Zend フレームワーク 2.2.2 を使用して PHP アプリケーションを作成しています。

zend Framework 2 を使用して FlashMessanger を使用できるようにする方法を知りたいです。

次のコードを使用して、zf1 を使用して Flash Messanger をフェッチできることがわかりました。

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

zf2 を使用してフラッシュメッセンジャーを取得するにはどうすればよいですか?

問題は、フラッシュメッセンジャーを自分のユーティリティクラスで利用できるようにしたいので、そこからメッセンジャーをフェッチするためのコントローラーを利用できないということです。

何か案は?

ありがとう

4

1 に答える 1

2

FlashMessenger は ControllerPluginZend\Mvc\Controller\Plugin\FlashMessengerであり、それを使用することが最も理にかなっています。メッセンジャーを「UtilityClasses」に注入するのは、やや悪い考えのように思えます。これにより、応答チェックが非常に複雑になり、コントローラーがかなり肥大化するからです。ですから、それを念頭に置いてください。

ただし、FlashMessenger必要なクラスに を取得することは可能です。唯一の問題は、FM を使用できるようにするすべてのクラスを ServiceManager で呼び出す必要があることです。ServiceFactory は次のようになります。

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

もちろん、完全に注入したい場合は、ServiceClass で setter-injection または lazy-getters を使用するように書き直すこともできますServiceLocator(これはお勧めしません)。

于 2013-08-19T05:26:05.670 に答える