5 require_once __DIR__
."/config.php";
6 require_once __DIR__
."/github.php";
10 use FastRoute\DataGenerator
;
11 use FastRoute\Dispatcher
;
12 use FastRoute\RouteCollector
;
13 use FastRoute\RouteParser
;
16 use http\Env\Response
;
18 $injector->share(Request
::class);
19 $injector->share(Response
::class);
21 $injector->share(RouteCollector
::class)
22 ->prepare(RouteCollector
::class, function($routes) use($injector) {
23 $routes->addRoute("GET", "/reset", function(array $args = null) use($injector) {
24 $injector->make(Session
::class)->reset()->regenerateId();
25 $injector->make(Web
::class)->redirect($injector->make(BaseUrl
::class));
27 $routes->addRoute("GET", "/session", function(array $args = null) use($injector) {
28 $session = $injector->make(Session
::class);
29 $response = $injector->make(Response
::class);
30 if (!(extension_loaded("xdebug") && ini_get("xdebug.overload_var_dump") && ini_get("html_errors"))) {
31 $response->setContentType("text/plain");
34 var_dump($_SESSION, $session);
36 $routes->addRoute("GET", "/info", function(array $args = null) {
40 foreach (parse_ini_file(__DIR__
."/../routes.ini", true) as $controller => $definition) {
41 $factory = function(array $args = null) use($injector, $controller) {
42 $handler = $injector->make("app\\Controller\\$controller");
45 foreach ($definition as $method => $locations) {
46 foreach ($locations as $location) {
47 $routes->addRoute($method, $location, $factory);
52 ->alias(RouteParser
::class, RouteParser\Std
::class)
53 ->alias(DataGenerator
::class, DataGenerator\GroupCountBased
::class);
55 $injector->share(Dispatcher
::class)
56 ->alias(Dispatcher
::class, Dispatcher\GroupCountBased
::class)
57 ->delegate(Dispatcher\GroupCountBased
::class, function($class, Injector
$injector) {
58 return new $class($injector->make(RouteCollector
::class)->getData());
61 $injector->prepare(Controller
::class, function(Controller
$controller, Injector
$injector) {
62 if (method_exists($controller, "setSession")) {
63 $controller->setSession($injector->make(Session
::class));
67 $injector->share(Session
::class)
68 ->prepare(Session
::class, function(Session
$session, Injector
$injector) {
69 if (isset($session->current
) && (!isset($session->previous
) ||
strcmp($session->current
, $session->previous
))) {
70 $session->previous
= $session->current
;
71 $session->current
= $injector->make(Request
::class)->getRequestUrl();
73 $session->current
= $injector->make(Request
::class)->getRequestUrl();
76 $injector->share(BaseUrl
::class);
77 $injector->share(Web
::class);