61 lines
1.0 KiB
PHP
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, $config['root_url']);
|
|
|
|
$app = new App(
|
|
$config,
|
|
$database,
|
|
$session,
|
|
$user
|
|
);
|
|
|
|
// We will use $app instead
|
|
unset(
|
|
$config,
|
|
$database,
|
|
$session,
|
|
$user
|
|
);
|
|
|
|
return $app; |