handle_exception()   A
last analyzed

Complexity

Conditions 3
Paths 4

Size

Total Lines 16
Code Lines 12

Duplication

Lines 0
Ratio 0 %

Importance

Changes 1
Bugs 0 Features 0
Metric Value
cc 3
eloc 12
nc 4
nop 1
dl 0
loc 16
rs 9.8666
c 1
b 0
f 0
1
<?php
2
//definir el separador de directorio
3
const DS = DIRECTORY_SEPARATOR; 
4
//definir la raíz del sitio
5
define('ROOT', dirname(__FILE__)); 
6
define('PIN_PATH', ROOT . DS . 'pin' . DS);
7
define('APP_PATH', ROOT . DS . 'app' . DS);
8
9
//establecer el directorio público (donde dejar los css, js, e imágenes)
10
define('ASSETS_PATH', '/public/');
11
12
//establecer la ruta para recibir las peticiones
13
define('PUBLIC_PATH', '/');
14
15
//*Locale*
16
setlocale(LC_ALL, 'es_CL');
17
18
//*Timezone*
19
ini_set('date.timezone', 'America/Santiago');
20
error_reporting(E_ALL);
21
ini_set('display_errors', 'On');
22
23
// Registrar autoloader PSR-4
24
require APP_PATH . 'Autoloader.php';
25
\App\Autoloader::register();
26
\App\Autoloader::addNamespace('App\\Handlers', APP_PATH . 'handlers');
27
\App\Autoloader::addNamespace('App\\Libs', APP_PATH . 'libs');
28
\App\Autoloader::addNamespace('App\\Models', APP_PATH . 'models');
29
\App\Autoloader::addNamespace('App\\Helpers', APP_PATH . 'helpers');
30
\App\Autoloader::addNamespace('App', APP_PATH);
31
// Mapeo para clases históricas bajo el namespace Pin\\Libs
32
\App\Autoloader::addNamespace('Pin\\Libs', PIN_PATH . 'libs');
33
34
// Manejadores de errores y excepciones
35
set_error_handler('handle_error');
36
set_exception_handler('handle_exception');
37
38
function handle_error($level, $message, $file, $line)
39
{
40
    if (error_reporting() !== 0) {  
41
        throw new \ErrorException($message, 0, $level, $file, $line);
42
    }
43
}
44
45
function handle_exception($exception)
46
{
47
    $code = $exception->getCode();
48
    if ($code != 404) {
49
        $code = 500;
50
    }
51
    http_response_code($code);
52
53
    if (error_reporting() !== 0) {
54
        echo "<div style='padding: 40px;font-family: Arial'>";
55
		echo "<h1>Fatal error</h1>";
56
        echo "<p>Uncaught exception: '" . get_class($exception) . "'</p>";
57
        echo "<p>Message: '" . $exception->getMessage() . "'</p>";
58
        echo "<p>Stack trace:<pre>" . $exception->getTraceAsString() . "</pre></p>";
59
        echo "<p>Thrown in '" . $exception->getFile() . "' on line " . $exception->getLine() . "</p>";
60
		echo "</div>";
61
    }
62
}