This repository has been archived on 2023-01-06. You can view files and clone it, but cannot push or open issues or pull requests.
web/app/inc.php
2022-02-06 03:35:20 +01:00

61 lines
1.0 KiB
PHP

<?php
/*
This is the main file to be included on every page.
It will act as a front controller of our application.
_____
/ \
| () () |
\ ^ /
|||||
|||||
Tread carefully
*/
// Disable type coercion
declare(strict_types=1);
// Autoloader
spl_autoload_register(function ($class_name) {
require __DIR__ . '/core/' . $class_name . '.php';
});
/* === App Setup === */
// Displays a custom page on error or exception
new ErrorHandler;
// Grab configuration file
$config = (
new Config(__DIR__ . '/config.php')
)->config;
// Start database connection
$database = new Database($config['database']);
// Session wrapper
$session = new Session;
// Handles current user session
$user = new User($session, $database);
// Decides if the user is allowed to view current page
new AccessControl($user);
$app = new App(
$config,
$database,
$session,
$user
);
// We will use $app instead
unset(
$config,
$database,
$session,
$user
);
return $app;