Skip to content

Commit 49fd40c

Browse files
committed
Merge branch 'skip-default-view-on-excluded-errors'
2 parents 750770c + ff410e7 commit 49fd40c

File tree

3 files changed

+22
-104
lines changed

3 files changed

+22
-104
lines changed

spec/Fixture/autoload-for-enable-display-errors/error-hero-module.local.php

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -58,7 +58,8 @@
5858

5959
// excluded php errors
6060
'exclude-php-errors' => [
61-
E_USER_DEPRECATED
61+
E_USER_DEPRECATED,
62+
E_NOTICE,
6263
],
6364

6465
// show or not error

spec/Listener/MvcSpec.php

Lines changed: 0 additions & 84 deletions
Original file line numberDiff line numberDiff line change
@@ -270,90 +270,6 @@
270270

271271
});
272272

273-
describe('->phpError()', function () {
274-
275-
it('set error_reporting & ini_set(display_errors) when display_errors config = 0', function () {
276-
277-
expect('error_reporting')->toBeCalled();
278-
expect('ini_set')->toBeCalled();
279-
280-
$mvcEvent = Double::instance(['extends' => MvcEvent::class, 'methods' => '__construct']);
281-
$this->listener->phpError($mvcEvent);
282-
283-
});
284-
285-
it('not set error_reporting & ini_set(display_errors) when display_errors config = 0', function () {
286-
287-
$config = [
288-
'enable' => true,
289-
'display-settings' => [
290-
291-
// excluded php errors
292-
'exclude-php-errors' => [
293-
E_USER_DEPRECATED
294-
],
295-
296-
// show or not error
297-
'display_errors' => 1,
298-
299-
// if enable and display_errors = 0, the page will bring layout and view
300-
'template' => [
301-
'layout' => 'layout/layout',
302-
'view' => 'error-hero-module/error-default'
303-
],
304-
305-
// if enable and display_errors = 0, the console will bring message
306-
'console' => [
307-
'message' => 'We have encountered a problem and we can not fulfill your request. An error report has been generated and send to the support team and someone will attend to this problem urgently. Please try again later. Thank you for your patience.',
308-
],
309-
310-
],
311-
'logging-settings' => [
312-
'same-error-log-time-range' => 86400,
313-
],
314-
'email-notification-settings' => [
315-
// set to true to activate email notification on log error
316-
'enable' => false,
317-
318-
// Zend\Mail\Message instance registered at service manager
319-
'mail-message' => 'YourMailMessageService',
320-
321-
// Zend\Mail\Transport\TransportInterface instance registered at service manager
322-
'mail-transport' => 'YourMailTransportService',
323-
324-
// email sender
325-
'email-from' => 'Sender Name <[email protected]>',
326-
327-
'email-to-send' => [
328-
329-
330-
],
331-
],
332-
];
333-
334-
$logging = Double::instance([
335-
'extends' => Logging::class,
336-
'methods' => '__construct'
337-
]);
338-
339-
$renderer = Double::instance(['extends' => PhpRenderer::class, 'methods' => '__construct']);
340-
341-
$listener = new Mvc(
342-
$config,
343-
$logging,
344-
$renderer
345-
);
346-
347-
expect('error_reporting')->not->toBeCalled();
348-
expect('ini_set')->not->toBeCalled();
349-
350-
$mvcEvent = Double::instance(['extends' => MvcEvent::class, 'methods' => '__construct']);
351-
$listener->phpError($mvcEvent);
352-
353-
});
354-
355-
});
356-
357273
describe('->execOnShutdown()', function () {
358274

359275
it('call error_get_last() and return nothing', function () {

src/Listener/Mvc.php

Lines changed: 20 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -93,11 +93,6 @@ public function exceptionError($e)
9393

9494
public function phpError($e)
9595
{
96-
if ($this->errorHeroModuleConfig['display-settings']['display_errors'] === 0) {
97-
error_reporting(E_ALL | E_STRICT);
98-
ini_set('display_errors', 0);
99-
}
100-
10196
register_shutdown_function([$this, 'execOnShutdown']);
10297
set_error_handler([$this, 'phpErrorHandler']);
10398
}
@@ -119,23 +114,29 @@ public function execOnShutdown()
119114
public function phpErrorHandler($errorType, $errorMessage, $errorFile, $errorLine)
120115
{
121116
$errorTypeString = $this->errorType[$errorType];
117+
$errorExcluded = false;
118+
if ($errorLine) {
119+
if (in_array($errorType, $this->errorHeroModuleConfig['display-settings']['exclude-php-errors'])) {
120+
$errorExcluded = true;
121+
} else {
122+
$this->logging->handleError(
123+
$errorType,
124+
$errorMessage,
125+
$errorFile,
126+
$errorLine,
127+
$errorTypeString
128+
);
129+
}
130+
}
122131

123-
if ($errorLine &&
124-
!in_array(
125-
$errorType,
126-
$this->errorHeroModuleConfig['display-settings']['exclude-php-errors']
127-
)
128-
) {
129-
$this->logging->handleError(
130-
$errorType,
131-
$errorMessage,
132-
$errorFile,
133-
$errorLine,
134-
$errorTypeString
135-
);
132+
if ($this->errorHeroModuleConfig['display-settings']['display_errors'] === 0 || $errorExcluded) {
133+
error_reporting(E_ALL | E_STRICT);
134+
ini_set('display_errors', 0);
136135
}
137136

138-
$this->showDefaultViewWhenDisplayErrorSetttingIsDisabled();
137+
if (! $errorExcluded) {
138+
$this->showDefaultViewWhenDisplayErrorSetttingIsDisabled();
139+
}
139140
}
140141

141142
/**

0 commit comments

Comments
 (0)