Example #1
0
<?php

/**
 * Front Controller
 */
define('APP_DIR', dirname(__DIR__));
define('APP_MODE_CLI', false);
require APP_DIR . '/vendor/autoload.php';
$_response_send = new Deferred(function () {
    Response::sent() || Response::send();
});
// Load Classes
Loader::addPath(APP_DIR . '/classes');
// Load options
Options::loadPHP(APP_DIR . '/config.php');
// Temp directory
define('TEMP_DIR', Options::get('cache.directory', sys_get_temp_dir()));
// Caching strategy
Cache::using(['files' => ['cache_dir' => TEMP_DIR]]);
// Init Views
View::using(new View\Twig(APP_DIR . '/templates', ['cache' => Options::get('cache.views', true) ? TEMP_DIR : false, 'auto_reload' => Options::get('debug', false)]));
View::addGlobals(['BASE_URL' => rtrim(dirname($_SERVER['PHP_SELF']), '/') . '/', 'CACHEBUST' => Options::get('debug', false) ? '?v=' . time() : '']);
// App bootstrap
include APP_DIR . '/boot.php';
Event::trigger('app.run');
// Routes
foreach (glob(APP_DIR . '/routes/*.php') as $routedef) {
    include $routedef;
}
Event::trigger('app.dispatch');
Route::dispatch();