| 
<?php
 use Framework\Config\Loader;
 use Framework\Config\Environments;
 use Framework\Config\Config;
 
 use Framework\Http\Builders\RequestBuilder;
 use Framework\Http\Builders\ResponseBuilder;
 
 use Framework\Http\Request;
 use Framework\Http\Response;
 
 use Framework\Routing\Router;
 
 use Framework\MySQL\Database;
 use Framework\MySQL\Connection;
 
 // require __DIR__ . '/../resources/Smarty/Smarty.class.php';
 require __DIR__ . '/../autoloader.php';
 
 $App = new App();
 
 $App->register(Router::CLASS, function (Request $request) {
 $router = new Router($request);
 
 $middleware1 = function () {
 echo "middleware 1";
 };
 
 $middleware2 = function () {
 echo "middleware 2";
 };
 
 $router->any('/', function () {
 echo 'index page';
 });
 
 $router->get('/:all', function ($all) {
 echo $all;
 });
 
 $router->get('/(post|posts)/:slug/:id', function($slug, $id) {
 echo "You are seeing the post nš $id, with title: $slug";
 });
 
 $router->run();
 });
 
 $App->register(Request::CLASS, function () {
 $builder = new RequestBuilder();
 $builder->addContentParser('application/json', function () {
 if(!($data = json_decode(file_get_contents('php://input'), true))) {
 $data = [];
 }
 
 return $data;
 });
 
 return $builder->create(['get' => $_GET, 'files' => $_FILES, 'server' => $_SERVER, 'post' => $_POST, 'cookies' => $_COOKIE]);
 });
 
 $App->register(Database::CLASS, function () {
 $config = $App->resolve(Config::CLASS, 'mysql');
 
 return Database::getInstance(
 new Connection(
 $config->get('hostname'),
 $config->get('username'),
 $config->get('password'),
 $config->get('database'),
 $config->get('options')
 )
 );
 });
 
 $configDirPath = __DIR__ . '/../bootstrap/config';
 $App->register(Config::CLASS, function (
 string $environment = 'default',
 array $settings = array(
 'local' => array(
 'ubuntu',
 'localhost',
 'macbook',
 'windows'
 )
 )
 ) use ($configDirPath) {
 return new Config(
 new Loader($configDirPath),
 new Environments($settings)
 , $environment);
 });
 ?>
 |