@@ -20,11 +20,6 @@ class ErrorEventListener extends AbstractListenerAggregate
2020 */
2121 private $ resolver ;
2222
23- /**
24- * @var JsonErrorResponseFactoryInterface
25- */
26- private $ jsonErrorResponseFactory ;
27-
2823 public function __construct (array $ configuration )
2924 {
3025 $ this ->resolver = new Resolver ($ configuration );
@@ -66,29 +61,50 @@ public function attach(EventManagerInterface $events, $priority = 1)
6661 */
6762 public function handleExceptionError (MvcEvent $ event )
6863 {
69- /** @var Exception $exception */
70- $ exception = $ event ->getParam ('exception ' );
71- if (!$ exception ){
72- return $ event ;
73- }
74- $ serviceManager = $ this ->getServiceManagerFromMvcEvent ($ event );
64+ return $ this ->handleError ($ event );
65+ }
7566
76- $ errorLogging = $ this ->resolver ->resolveConfiguration ($ event );
67+ /**
68+ * @param MvcEvent $event
69+ * @return MvcEvent
70+ * @throws \Interop\Container\Exception\ContainerException
71+ * @throws \ReflectionException
72+ * @throws \Zend\Mvc\Di\Exceptions\UnsolvableDependencyException
73+ * @throws \Zend\Mvc\ErrorInterceptor\Exceptions\Logger\InvalidFactoryException
74+ * @throws \Zend\Mvc\ErrorInterceptor\Exceptions\Logger\InvalidJsonErrorResponseFactoryClassException
75+ * @throws \Zend\Mvc\ErrorInterceptor\Exceptions\Logger\InvalidLoggerClassException
76+ * @throws \Zend\Mvc\ErrorInterceptor\Exceptions\Parse\LoggerClassDefinedAndIgnoredException
77+ * @throws \Zend\Mvc\ErrorInterceptor\Exceptions\Parse\LoggerClassException
78+ * @throws \Zend\Mvc\ErrorInterceptor\Exceptions\Parse\NoExceptionClassDefined
79+ * @throws \Zend\Mvc\ErrorInterceptor\Exceptions\Parse\NoLoggerDefinitionException
80+ */
81+ private function handleError (MvcEvent $ event ): MvcEvent
82+ {
83+ if ($ event ->isError ()) {
7784
78- foreach ($ errorLogging ->getLoggers () as $ logger ){
79- if ($ logger ->canLog ($ exception )){
80- /** @var Logger $loggerInstance */
81- $ loggerInstance = $ serviceManager ->get ($ logger ->getClassName ());
82- $ loggerInstance ->info ($ exception ->getMessage ());
85+ /** @var Exception $exception */
86+ $ exception = $ event ->getParam ('exception ' );
87+ if (!$ exception ) {
88+ return $ event ;
8389 }
84- }
90+ $ serviceManager = $ this ->getServiceManagerFromMvcEvent ($ event );
91+
92+ $ errorLogging = $ this ->resolver ->resolveConfiguration ($ event );
8593
86- $ event ->getResponse ()->setStatusCode (400 );
87- /** @var JsonErrorResponseFactoryInterface $jsonErrorResponseFactory */
88- $ jsonErrorResponseFactory = $ serviceManager ->get ($ errorLogging ->getResponse ());
94+ foreach ($ errorLogging ->getLoggers () as $ logger ) {
95+ if ($ logger ->canLog ($ exception )) {
96+ /** @var Logger $loggerInstance */
97+ $ loggerInstance = $ serviceManager ->get ($ logger ->getClassName ());
98+ $ loggerInstance ->info ($ exception ->getMessage ());
99+ }
100+ }
89101
90- $ event ->setViewModel ($ jsonErrorResponseFactory ->createResponse ($ exception ->getMessage ()));
102+ /** @var JsonErrorResponseFactoryInterface $jsonErrorResponseFactory */
103+ $ jsonErrorResponseFactory = $ serviceManager ->get ($ errorLogging ->getResponse ());
91104
105+ $ event ->setViewModel ($ jsonErrorResponseFactory ->createResponse ($ exception ->getMessage ()));
106+ $ event ->stopPropagation (true );
107+ }
92108 return $ event ;
93109 }
94110
@@ -102,16 +118,23 @@ private function getServiceManagerFromMvcEvent(MvcEvent $event): ServiceLocatorI
102118 return $ application ->getServiceManager ();
103119 }
104120
105- private function setResponse (MvcEvent $ event , string $ message )
121+ /**
122+ * @param MvcEvent $event
123+ * @return MvcEvent
124+ * @throws \Interop\Container\Exception\ContainerException
125+ * @throws \ReflectionException
126+ * @throws \Zend\Mvc\Di\Exceptions\UnsolvableDependencyException
127+ * @throws \Zend\Mvc\ErrorInterceptor\Exceptions\Logger\InvalidFactoryException
128+ * @throws \Zend\Mvc\ErrorInterceptor\Exceptions\Logger\InvalidJsonErrorResponseFactoryClassException
129+ * @throws \Zend\Mvc\ErrorInterceptor\Exceptions\Logger\InvalidLoggerClassException
130+ * @throws \Zend\Mvc\ErrorInterceptor\Exceptions\Parse\LoggerClassDefinedAndIgnoredException
131+ * @throws \Zend\Mvc\ErrorInterceptor\Exceptions\Parse\LoggerClassException
132+ * @throws \Zend\Mvc\ErrorInterceptor\Exceptions\Parse\NoExceptionClassDefined
133+ * @throws \Zend\Mvc\ErrorInterceptor\Exceptions\Parse\NoLoggerDefinitionException
134+ */
135+ public function handlePhpError (MvcEvent $ event )
106136 {
107- $ event ->getResponse ()->setStatusCode (400 );
108-
137+ return $ this ->handleError ($ event );
109138 }
110139
111- // public function handlePhpError(MvcEvent $event)
112- // {
113- //
114- // return $event;
115- // }
116-
117140}
0 commit comments