I'm frustrated so I'm posting the finished code from the video. So far I'm not seeing what is wrong.
index.php
require Router::load('routes.php')
->direct(Request::uri(), Request::method());
bootstrap.php
$app['config'] = require 'config.php';
require 'core/Router.php';
require 'core/Request.php';
require 'core/database/Connection.php';
require 'core/database/QueryBuilder.php';
$app['database'] = new QueryBuilder(
Connection::make($app['config']['database'])
);
routes.php
$router->get('about', 'controllers/about.php');
$router->get('about/culture', 'controllers/about-culture.php');
$router->get('names', 'controllers/add-name.php');
Router.php
{
public $routes = [
'GET' => [],
'POST' => []
];
public static function load($file)
{
$router = new static;
require $file;
return $router;
}
public function get($uri, $controller)
{
$this->routes['GET'][$uri] = $controller;
}
public function post($uri, $controller)
{
$this->routes['POST'][$uri] = $controller;
}
public function direct($uri, $requestType)
{
if (array_key_exists($uri, $this->routes[$requestType])) {
return $this->routes[$requestType][$uri];
var_dump($uri);
var_dump($this->routes[$requestType]);
}
var_dump($uri);
var_dump($this->routes[$requestType]);
throw new Exception('No route defined for this URI.');
}
}
Request.php
{
public static function uri()
{
return trim(parse_url($_SERVER['REQUEST_URI'], PHP_URL_PATH), '/');
}
public static function method()
{
return $_SERVER['REQUEST_METHOD'];
}
}
index.view.php
<h1>Submit Your Name</h1>
<form method="POST" action="names">
<input name="name"></input>
<button type="submit">Submit</button>
</form>
<?php require('partials/footer.php'); ?>