Core MVC, HTTP client, Session, Cookie, Config, HTTPException — 111 PHPUnit tests. Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
56 lines
1.5 KiB
PHP
56 lines
1.5 KiB
PHP
<?php
|
|
/**
|
|
* @package Bicycle
|
|
* @author Egor Isaev
|
|
* @description HTTP/HTTPException.php
|
|
* @copyright (c) 04/06/2026
|
|
*/
|
|
|
|
namespace System\Classes\HTTP;
|
|
|
|
use System\Classes\Core;
|
|
use System\Classes\MyException;
|
|
use System\Classes\Response;
|
|
|
|
class HTTPException extends MyException
|
|
{
|
|
protected int $_code = 0;
|
|
|
|
public function __construct(string $message = '', ?array $variables = null, ?\Throwable $previous = null, int $codeOverride = 0)
|
|
{
|
|
if ($codeOverride !== 0) {
|
|
$this->_code = $codeOverride;
|
|
}
|
|
parent::__construct($message, $variables, $this->_code, $previous);
|
|
}
|
|
|
|
public static function factory(int $code, string $message = '', ?array $variables = null, ?\Throwable $previous = null): static
|
|
{
|
|
$class = 'System\\Classes\\HTTP\\Exception\\HTTPException_' . $code;
|
|
|
|
if (class_exists($class)) {
|
|
return new $class($message, $variables, $previous);
|
|
}
|
|
|
|
return new static($message, $variables, $previous, $code);
|
|
}
|
|
|
|
public function get_response(): Response
|
|
{
|
|
$code = $this->_code ?: 500;
|
|
http_response_code($code);
|
|
|
|
$response = new Response($code);
|
|
$view = Core::findFile('view/errors', (string)$code, 'html');
|
|
|
|
if ($view) {
|
|
ob_start();
|
|
$message = $this->getMessage();
|
|
include $view;
|
|
$response->body(ob_get_clean());
|
|
}
|
|
|
|
return $response;
|
|
}
|
|
}
|