mirror of
https://github.com/mivodev/mivo.git
synced 2026-01-26 05:25:42 +07:00
77 lines
2.1 KiB
PHP
77 lines
2.1 KiB
PHP
<?php
|
|
|
|
use App\Core\Router;
|
|
|
|
// Start Output Buffering
|
|
ob_start();
|
|
|
|
// Define Root Path
|
|
define('ROOT', dirname(__DIR__));
|
|
|
|
// Handle Static Files for PHP Built-in Server
|
|
if (php_sapi_name() === 'cli-server') {
|
|
$url = parse_url($_SERVER['REQUEST_URI']);
|
|
$file = __DIR__ . $url['path'];
|
|
if (is_file($file)) {
|
|
return false;
|
|
}
|
|
}
|
|
|
|
// Start Session
|
|
session_start();
|
|
|
|
// Manual require for the Autoloader class since it can't autoload itself
|
|
require_once ROOT . '/app/Core/Autoloader.php';
|
|
\App\Core\Autoloader::register();
|
|
|
|
// Load Environment Variables
|
|
\App\Core\Env::load(ROOT . '/.env');
|
|
|
|
// Initialize Router
|
|
$router = new Router();
|
|
|
|
// Initialize Plugin System
|
|
$pluginManager = new \App\Core\PluginManager();
|
|
$pluginManager->loadPlugins();
|
|
|
|
|
|
// Global Error Handling for Dev Mode
|
|
if (\App\Config\SiteConfig::IS_DEV) {
|
|
// Catch Fatal Errors (Shutdown)
|
|
register_shutdown_function(function() {
|
|
$error = error_get_last();
|
|
if ($error && ($error['type'] === E_ERROR || $error['type'] === E_PARSE || $error['type'] === E_CORE_ERROR || $error['type'] === E_COMPILE_ERROR)) {
|
|
// Convert to exception format for our helper
|
|
$e = new ErrorException($error['message'], 0, $error['type'], $error['file'], $error['line']);
|
|
\App\Helpers\ErrorHelper::showException($e);
|
|
}
|
|
});
|
|
|
|
// Catch Uncaught Exceptions
|
|
set_exception_handler(function($e) {
|
|
\App\Helpers\ErrorHelper::showException($e);
|
|
});
|
|
}
|
|
|
|
// Define Routes
|
|
require_once ROOT . '/routes/web.php';
|
|
require_once ROOT . '/routes/api.php';
|
|
|
|
// Dispatch
|
|
// Dispatch
|
|
try {
|
|
$router->dispatch($_SERVER['REQUEST_URI'], $_SERVER['REQUEST_METHOD']);
|
|
} catch (Exception $e) {
|
|
if (\App\Config\SiteConfig::IS_DEV) {
|
|
\App\Helpers\ErrorHelper::showException($e);
|
|
} else {
|
|
\App\Helpers\ErrorHelper::show(500, 'Internal Server Error', $e->getMessage());
|
|
}
|
|
} catch (Error $e) {
|
|
if (\App\Config\SiteConfig::IS_DEV) {
|
|
\App\Helpers\ErrorHelper::showException($e);
|
|
} else {
|
|
\App\Helpers\ErrorHelper::show(500, 'System Error', $e->getMessage());
|
|
}
|
|
}
|