56 lines
1.3 KiB
HTML
56 lines
1.3 KiB
HTML
|
<?php
|
||
|
|
||
|
// minimum PHP version required to continue
|
||
|
$php_version = '8.1';
|
||
|
if (version_compare(PHP_VERSION, $php_version, '<')) {
|
||
|
http_response_code(500);
|
||
|
echo 'This app requires a minimum of PHP ' . $php_version;
|
||
|
die();
|
||
|
}
|
||
|
unset($php_version);
|
||
|
|
||
|
// PSR-4 like autoloader
|
||
|
spl_autoload_register(
|
||
|
function ($class_name) {
|
||
|
$path = __DIR__ . '/../app/' . str_replace('\\', '/', $class_name) . '.php';
|
||
|
require $path;
|
||
|
}
|
||
|
);
|
||
|
|
||
|
/**
|
||
|
* Helper for evaluating/including views
|
||
|
*/
|
||
|
function view(string $_view, array $_data = [])
|
||
|
{
|
||
|
$_path = __DIR__ . '/../views/' . $_view . '.php';
|
||
|
extract($_data);
|
||
|
require $_path;
|
||
|
}
|
||
|
|
||
|
/**
|
||
|
* Helper for converting and outputting JSON
|
||
|
*/
|
||
|
function json_response(mixed $data, int $status_code = 200)
|
||
|
{
|
||
|
http_response_code($status_code);
|
||
|
header('Content-type: application/json');
|
||
|
echo json_encode($data);
|
||
|
}
|
||
|
|
||
|
/**
|
||
|
* Helper for generating URLs
|
||
|
*/
|
||
|
function url(string $url, bool $full = false): string
|
||
|
{
|
||
|
$dir = dirname($_SERVER['SCRIPT_NAME']);
|
||
|
if ($dir === '/') {
|
||
|
$dir = '';
|
||
|
}
|
||
|
if (!$full) {
|
||
|
return $dir . $url;
|
||
|
}
|
||
|
return isset($_SERVER['HTTPS']) ? 'https' : 'http' . '://' . $_SERVER['HTTP_HOST'] . $dir . $url;
|
||
|
}
|
||
|
|
||
|
// now lets get routing!
|
||
|
require __DIR__ . '/../routes/start.php';
|