Core MVC, HTTP client, Session, Cookie, Config, HTTPException — 111 PHPUnit tests. Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
55 lines
1.5 KiB
PHP
55 lines
1.5 KiB
PHP
<?php
|
|
/**
|
|
* @package Bicycle
|
|
* @author Egor Isaev
|
|
* @description MyException.php
|
|
* @copyright (c) 03/06/2026
|
|
*/
|
|
|
|
namespace System\Classes;
|
|
|
|
use Exception;
|
|
use Throwable;
|
|
|
|
class MyException extends Exception
|
|
{
|
|
/**
|
|
* @param $message
|
|
* @param array|null $variables
|
|
* @param $code
|
|
* @param Exception|null $previous
|
|
*/
|
|
public function __construct(string $message = "", ?array $variables = null, int $code = 0, ?Throwable $previous = null)
|
|
{
|
|
if ($variables) {
|
|
$message = strtr($message, $variables);
|
|
}
|
|
|
|
parent::__construct($message, $code, $previous);
|
|
}
|
|
|
|
public static function handler(Throwable $e): void
|
|
{
|
|
$httpCode = ($e->getCode() >= 100 && $e->getCode() <= 599) ? $e->getCode() : 500;
|
|
http_response_code($httpCode);
|
|
|
|
if (Core::$environment >= Core::DEVELOPMENT) {
|
|
$class = get_class($e);
|
|
$code = $e->getCode();
|
|
$message = $e->getMessage();
|
|
$file_ = $e->getFile();
|
|
$line = $e->getLine();
|
|
$xdebug_message = property_exists($e, 'xdebug_message') ? $e->xdebug_message : '';
|
|
|
|
$view = Core::findFile('view/exception', 'error', 'html');
|
|
if ($view) {
|
|
include $view;
|
|
return;
|
|
}
|
|
}
|
|
|
|
if (($view500 = Core::findFile('view/errors', '500', 'html')) !== false) {
|
|
include $view500;
|
|
}
|
|
}
|
|
} |