• Home
  • Features
  • Pricing
  • Docs
  • Announcements
  • Sign In

slimphp / Slim-Skeleton / 9094993041

15 May 2024 11:39AM UTC coverage: 58.75% (-0.7%) from 59.494%
9094993041

Pull #351

github

web-flow
Merge 2079ed97f into 0ef015498
Pull Request #351: Fixed "ERROR: Using ${var} in strings is deprecated, use {$var} instead" and added logError and logErrorDetails variables on the Shutdown handler

1 of 11 new or added lines in 2 files covered. (9.09%)

2 existing lines in 1 file now uncovered.

94 of 160 relevant lines covered (58.75%)

2.02 hits per line

Source File
Press 'n' to go to next uncovered line, 'b' for previous

0.0
/src/Application/Handlers/ShutdownHandler.php
1
<?php
2

3
declare(strict_types=1);
4

5
namespace App\Application\Handlers;
6

7
use App\Application\ResponseEmitter\ResponseEmitter;
8
use Psr\Http\Message\ServerRequestInterface as Request;
9
use Slim\Exception\HttpInternalServerErrorException;
10

11
class ShutdownHandler
12
{
13
    private Request $request;
14

15
    private HttpErrorHandler $errorHandler;
16

17
    private bool $displayErrorDetails;
18

19
    private bool $logError;
20

21
    private bool $logErrorDetails;
22

23
    public function __construct(
24
        Request $request,
25
        HttpErrorHandler $errorHandler,
26
        bool $displayErrorDetails,
27
        bool $logError,
28
        bool $logErrorDetails
29
    ) {
NEW
30
        $this->request             = $request;
×
NEW
31
        $this->errorHandler        = $errorHandler;
×
UNCOV
32
        $this->displayErrorDetails = $displayErrorDetails;
×
NEW
33
        $this->logError            = $logError;
×
NEW
34
        $this->logErrorDetails     = $logErrorDetails;
×
35
    }
36

37
    public function __invoke()
38
    {
39
        $error = error_get_last();
×
40

41
        if (!$error) {
×
42
            return;
×
43
        }
44

NEW
45
        $message   = $this->getErrorMessage($error);
×
46
        $exception = new HttpInternalServerErrorException($this->request, $message);
×
47

48
        $response = $this->errorHandler->__invoke(
×
49
            $this->request,
×
50
            $exception,
×
51
            $this->displayErrorDetails,
×
NEW
52
            $this->logError,
×
NEW
53
            $this->logErrorDetails,
×
UNCOV
54
        );
×
55

56
        $responseEmitter = new ResponseEmitter();
×
57
        $responseEmitter->emit($response);
×
58
    }
59

60
    private function getErrorMessage(array $error): string
61
    {
62
        if (!$this->displayErrorDetails) {
×
63
            return 'An error while processing your request. Please try again later.';
×
64
        }
65

NEW
66
        $errorFile    = $error['file'];
×
NEW
67
        $errorLine    = $error['line'];
×
68
        $errorMessage = $error['message'];
×
NEW
69
        $errorType    = $error['type'];
×
70

71
        if ($errorType === E_USER_ERROR) {
×
72
            return "FATAL ERROR: {$errorMessage}. on line {$errorLine} in file {$errorFile}.";
×
73
        }
74

75
        if ($errorType === E_USER_WARNING) {
×
76
            return "WARNING: {$errorMessage}";
×
77
        }
78

79
        if ($errorType === E_USER_NOTICE) {
×
80
            return "NOTICE: {$errorMessage}";
×
81
        }
82

83
        return "FATAL ERROR: {$errorMessage}. on line {$errorLine} in file {$errorFile}.";
×
84
    }
85
}
STATUS · Troubleshooting · Open an Issue · Sales · Support · CAREERS · ENTERPRISE · START FREE · SCHEDULE DEMO
ANNOUNCEMENTS · TWITTER · TOS & SLA · Supported CI Services · What's a CI service? · Automated Testing

© 2026 Coveralls, Inc