1212use Zend \EventManager \EventManagerAwareInterface ;
1313use Zend \EventManager \EventManagerInterface ;
1414use Zend \ServiceManager \ServiceManager ;
15+ use Zend \Stdlib \RequestInterface ;
1516use Zend \Stdlib \ResponseInterface ;
1617
1718/**
@@ -103,15 +104,18 @@ class Application implements
103104 * @param mixed $configuration
104105 * @param ServiceManager $serviceManager
105106 */
106- public function __construct ($ configuration , ServiceManager $ serviceManager )
107- {
107+ public function __construct (
108+ $ configuration ,
109+ ServiceManager $ serviceManager ,
110+ EventManagerInterface $ events ,
111+ RequestInterface $ request ,
112+ ResponseInterface $ response
113+ ) {
108114 $ this ->configuration = $ configuration ;
109115 $ this ->serviceManager = $ serviceManager ;
110-
111- $ this ->setEventManager ($ serviceManager ->get ('EventManager ' ));
112-
113- $ this ->request = $ serviceManager ->get ('Request ' );
114- $ this ->response = $ serviceManager ->get ('Response ' );
116+ $ this ->setEventManager ($ events );
117+ $ this ->request = $ request ;
118+ $ this ->response = $ response ;
115119 }
116120
117121 /**
@@ -142,19 +146,20 @@ public function bootstrap(array $listeners = [])
142146 $ listeners = array_unique (array_merge ($ this ->defaultListeners , $ listeners ));
143147
144148 foreach ($ listeners as $ listener ) {
145- $ events -> attach ( $ serviceManager ->get ($ listener ));
149+ $ serviceManager ->get ($ listener )-> attach ( $ events );
146150 }
147151
148152 // Setup MVC Event
149153 $ this ->event = $ event = new MvcEvent ();
154+ $ event ->setName (MvcEvent::EVENT_BOOTSTRAP );
150155 $ event ->setTarget ($ this );
151- $ event ->setApplication ($ this )
152- ->setRequest ($ this ->request )
153- ->setResponse ($ this ->response )
154- ->setRouter ($ serviceManager ->get ('Router ' ));
156+ $ event ->setApplication ($ this );
157+ $ event ->setRequest ($ this ->request );
158+ $ event ->setResponse ($ this ->response );
159+ $ event ->setRouter ($ serviceManager ->get ('Router ' ));
155160
156161 // Trigger bootstrap events
157- $ events ->trigger (MvcEvent:: EVENT_BOOTSTRAP , $ event );
162+ $ events ->triggerEvent ( $ event );
158163 return $ this ;
159164 }
160165
@@ -294,13 +299,15 @@ public function run()
294299 };
295300
296301 // Trigger route event
297- $ result = $ events ->trigger (MvcEvent::EVENT_ROUTE , $ event , $ shortCircuit );
302+ $ event ->setName (MvcEvent::EVENT_ROUTE );
303+ $ result = $ events ->triggerEventUntil ($ shortCircuit , $ event );
298304 if ($ result ->stopped ()) {
299305 $ response = $ result ->last ();
300306 if ($ response instanceof ResponseInterface) {
307+ $ event ->setName (MvcEvent::EVENT_FINISH );
301308 $ event ->setTarget ($ this );
302309 $ event ->setResponse ($ response );
303- $ events ->trigger (MvcEvent:: EVENT_FINISH , $ event );
310+ $ events ->triggerEvent ( $ event );
304311 $ this ->response = $ response ;
305312 return $ this ;
306313 }
@@ -311,14 +318,16 @@ public function run()
311318 }
312319
313320 // Trigger dispatch event
314- $ result = $ events ->trigger (MvcEvent::EVENT_DISPATCH , $ event , $ shortCircuit );
321+ $ event ->setName (MvcEvent::EVENT_DISPATCH );
322+ $ result = $ events ->triggerEventUntil ($ shortCircuit , $ event );
315323
316324 // Complete response
317325 $ response = $ result ->last ();
318326 if ($ response instanceof ResponseInterface) {
327+ $ event ->setName (MvcEvent::EVENT_FINISH );
319328 $ event ->setTarget ($ this );
320329 $ event ->setResponse ($ response );
321- $ events ->trigger (MvcEvent:: EVENT_FINISH , $ event );
330+ $ events ->triggerEvent ( $ event );
322331 $ this ->response = $ response ;
323332 return $ this ;
324333 }
@@ -350,8 +359,13 @@ protected function completeRequest(MvcEvent $event)
350359 {
351360 $ events = $ this ->events ;
352361 $ event ->setTarget ($ this );
353- $ events ->trigger (MvcEvent::EVENT_RENDER , $ event );
354- $ events ->trigger (MvcEvent::EVENT_FINISH , $ event );
362+
363+ $ event ->setName (MvcEvent::EVENT_RENDER );
364+ $ events ->triggerEvent ($ event );
365+
366+ $ event ->setName (MvcEvent::EVENT_FINISH );
367+ $ events ->triggerEvent ($ event );
368+
355369 return $ this ;
356370 }
357371}
0 commit comments