Code Coverage
 
Classes and Traits
Functions and Methods
Lines
Total
0.00% covered (danger)
0.00%
0 / 1
0.00% covered (danger)
0.00%
0 / 1
CRAP
33.33% covered (danger)
33.33%
7 / 21
Router
0.00% covered (danger)
0.00%
0 / 1
0.00% covered (danger)
0.00%
0 / 1
12.41
33.33% covered (danger)
33.33%
7 / 21
 getRequestCallback
0.00% covered (danger)
0.00%
0 / 1
12.41
33.33% covered (danger)
33.33%
7 / 21
<?php
namespace Luxian\Http;
use Luxian\Container\ContainerInterface;
use Luxian\Controller;
class Router
{
    public function getRequestCallback(
        Request $request,
        ContainerInterface $container
    ): callable
    {
        $request_uri_path = $request->getRequestUriPath();
        if ($request_uri_path === '/login' || $request_uri_path === '/') {
            $controller = $container->getLoginController($request);
            return static function () use ($controller) {
                return $controller->getLoginPage();
            };
        }
        if ($request_uri_path === '/register') {
            $controller = $container->getRegisterController($request);
            return static function () use ($controller) {
                return $controller->getRegisterPage();
            };
        }
        if ($request_uri_path === '/info') {
            $controller = $container->getInfoController($request);
            return static function () use ($controller) {
                return $controller->phpinfo();
            };
        }
        // Default controller
        $controller = $container->getIndexController($request);
        $indexCallback = static function () use ($controller) {
            return $controller->getIndexPage();
        };
        return $indexCallback;
    }
}