Code Coverage
 
Lines
Functions and Methods
Classes and Traits
Total
100.00% covered (success)
100.00%
14 / 14
100.00% covered (success)
100.00%
1 / 1
CRAP
100.00% covered (success)
100.00%
1 / 1
UnhandledHandler
100.00% covered (success)
100.00%
14 / 14
100.00% covered (success)
100.00%
1 / 1
5
100.00% covered (success)
100.00%
1 / 1
 exceptionHandler
n/a
0 / 0
n/a
0 / 0
1
 errorHandler
100.00% covered (success)
100.00%
14 / 14
100.00% covered (success)
100.00%
1 / 1
2
 shutdownHandler
n/a
0 / 0
n/a
0 / 0
2
1<?php
2/**
3 * Jingga
4 *
5 * PHP Version 8.1
6 *
7 * @package   phpOMS
8 * @copyright Dennis Eichhorn
9 * @license   OMS License 2.0
10 * @version   1.0.0
11 * @link      https://jingga.app
12 */
13declare(strict_types=1);
14
15namespace phpOMS;
16
17use phpOMS\Log\FileLogger;
18
19/**
20 * Default exception and error handler.
21 *
22 * @package phpOMS
23 * @license OMS License 2.0
24 * @link    https://jingga.app
25 * @since   1.0.0
26 */
27final class UnhandledHandler
28{
29    /**
30     * Exception handler.
31     *
32     * @param \Throwable $e Exception
33     *
34     * @return void
35     *
36     * @since 1.0.0
37     * @codeCoverageIgnore
38     */
39    public static function exceptionHandler(\Throwable $e) : void
40    {
41        $logger = FileLogger::getInstance(__DIR__ . '/../Logs');
42        $logger->critical(FileLogger::MSG_FULL, [
43            'message' => $e->getMessage(),
44            'line'    => $e->getLine(),
45            'file'    => $e->getFile(),
46        ]);
47
48        $_SERVER = [];
49    }
50
51    /**
52     * Error handler.
53     *
54     * @param int    $errno   Error number
55     * @param string $errstr  Error message
56     * @param string $errfile Error file
57     * @param int    $errline Error line
58     *
59     * @return bool Returns true if the error could be logged otherwise false is returned
60     *
61     * @since 1.0.0
62     */
63    public static function errorHandler(int $errno, string $errstr, string $errfile, int $errline) : bool
64    {
65        $logger = FileLogger::getInstance(__DIR__ . '/../Logs');
66
67        if ((\error_reporting() & $errno) === 0) {
68            \error_clear_last();
69
70            $_SERVER = [];
71
72            return false;
73        }
74
75        \error_clear_last();
76
77        $logger->error(FileLogger::MSG_FULL, [
78            'message' => 'Undefined error',
79            'str'     => $errstr,
80            'line'    => $errline,
81            'file'    => $errfile,
82        ]);
83
84        $_SERVER = [];
85
86        return true;
87    }
88
89    /**
90     * Shutdown handler.
91     *
92     * @return void
93     *
94     * @since 1.0.0
95     * @codeCoverageIgnore
96     */
97    public static function shutdownHandler() : void
98    {
99        $e = \error_get_last();
100        \error_clear_last();
101
102        if ($e === null) {
103            $_SERVER = [];
104
105            return;
106        }
107
108        $logger = FileLogger::getInstance(__DIR__ . '/../Logs');
109        $logger->warning(FileLogger::MSG_FULL, [
110            'message' => $e['message'],
111            'line'    => $e['line'],
112            'file'    => $e['file'],
113        ]);
114
115        $_SERVER = [];
116    }
117}