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 $response->setContentType("text/plain");
32 var_dump($_SESSION, $session);
34 $routes->addRoute("GET", "/info", function(array $args = null) {
38 foreach (parse_ini_file(__DIR__
."/../routes.ini", true) as $controller => $definition) {
39 $factory = function(array $args = null) use($injector, $controller) {
40 $handler = $injector->make("app\\Controller\\$controller");
43 foreach ($definition as $method => $locations) {
44 foreach ($locations as $location) {
45 $routes->addRoute($method, $location, $factory);
50 ->alias(RouteParser
::class, RouteParser\Std
::class)
51 ->alias(DataGenerator
::class, DataGenerator\GroupCountBased
::class);
53 $injector->share(Dispatcher
::class)
54 ->alias(Dispatcher
::class, Dispatcher\GroupCountBased
::class)
55 ->delegate(Dispatcher\GroupCountBased
::class, function($class, Injector
$injector) {
56 return new $class($injector->make(RouteCollector
::class)->getData());
59 $injector->prepare(Controller
::class, function(Controller
$controller, Injector
$injector) {
60 if (method_exists($controller, "setSession")) {
61 $controller->setSession($injector->make(Session
::class));
65 $injector->share(Session
::class)
66 ->prepare(Session
::class, function(Session
$session, Injector
$injector) {
67 if (isset($session->current
) && (!isset($session->previous
) ||
strcmp($session->current
, $session->previous
))) {
68 $session->previous
= $session->current
;
69 $session->current
= $injector->make(Request
::class)->getRequestUrl();
71 $session->current
= $injector->make(Request
::class)->getRequestUrl();
74 $injector->share(BaseUrl
::class);
75 $injector->share(Web
::class);