|
|
|
<?php
|
|
|
|
|
|
|
|
namespace App;
|
|
|
|
|
|
|
|
class Router {
|
|
|
|
private $routes;
|
|
|
|
private $errRoute;
|
|
|
|
|
|
|
|
public function addRoute($pattern, $function) {
|
|
|
|
$this->routes['{'.$pattern.'}'] = $function;
|
|
|
|
}
|
|
|
|
|
|
|
|
public function addErrorRoute($function) {
|
|
|
|
$this->errRoute = $function;
|
|
|
|
}
|
|
|
|
|
|
|
|
public function run() {
|
|
|
|
foreach ($this->routes as $pattern => $function) {
|
|
|
|
if (preg_match($pattern, $_SERVER['REQUEST_URI'], $params)) {
|
|
|
|
array_shift($params);
|
|
|
|
array_unshift($params, $_SERVER['REQUEST_URI']);
|
|
|
|
|
|
|
|
return call_user_func_array($function, array_values($params));
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
return call_user_func($this->errRoute);
|
|
|
|
}
|
|
|
|
|
|
|
|
public function loadRoutes () {
|
|
|
|
$this->addRoute('^/?(?:\?|$)', function($url) {
|
|
|
|
require __DIR__ . '/../views/home.php';
|
|
|
|
});
|
|
|
|
|
|
|
|
$this->addRoute('^/add/?(?:\?|$)', function($url) {
|
|
|
|
require __DIR__ . '/../views/add.php';
|
|
|
|
});
|
|
|
|
|
|
|
|
$this->addRoute('^/alive/?([0-9]+)?/?(?:\?|$)', function($url, $page = 1) {
|
|
|
|
require __DIR__ . '/../views/alive.php';
|
|
|
|
});
|
|
|
|
|
|
|
|
$this->addRoute('^/all/?([0-9]+)?/?', function($url, $page = 1) {
|
|
|
|
require __DIR__ . '/../views/all.php';
|
|
|
|
});
|
|
|
|
|
|
|
|
$this->addRoute('^/api/?([^\?/]*)/?([^\?/]*)?/?(?:\?|$)', function($url, $command, $query = "") {
|
|
|
|
require __DIR__ . '/../views/api.php';
|
|
|
|
});
|
|
|
|
|
|
|
|
$this->addRoute('^/jump/?([^\?/]*)/?(?:\?|$)', function($url, $query = "") {
|
|
|
|
require __DIR__ . '/../views/jump.php';
|
|
|
|
});
|
|
|
|
|
|
|
|
$this->addRoute('^/autojump/?(.*)/?', function($url, $query = "") {
|
|
|
|
require __DIR__ . '/../views/autojump.php';
|
|
|
|
});
|
|
|
|
|
|
|
|
$this->addRoute('^/latest/?(?:\?|$)', function($url) {
|
|
|
|
require __DIR__ . '/../views/latest.php';
|
|
|
|
});
|
|
|
|
|
|
|
|
$this->addRoute('^/search/?([^\?/]*)/?(?:\?|$)', function($url, $query = "") {
|
|
|
|
require __DIR__ . '/../views/search.php';
|
|
|
|
});
|
|
|
|
|
|
|
|
$this->addRoute('^/hidden/?([0-9]+)?/?(?:\?|$)', function($url, $page = 1) {
|
|
|
|
require __DIR__ . '/../views/hidden.php';
|
|
|
|
});
|
|
|
|
|
|
|
|
$this->addErrorRoute(function() {
|
|
|
|
require __DIR__ . '/../views/404.php';
|
|
|
|
});
|
|
|
|
}
|
|
|
|
}
|