Code Coverage
 
Classes and Traits
Functions and Methods
Lines
Total
100.00% covered (success)
100.00%
1 / 1
100.00% covered (success)
100.00%
1 / 1
CRAP
100.00% covered (success)
100.00%
17 / 17
Router
100.00% covered (success)
100.00%
1 / 1
100.00% covered (success)
100.00%
1 / 1
5
100.00% covered (success)
100.00%
17 / 17
 getRequestCallback
100.00% covered (success)
100.00%
1 / 1
5
100.00% covered (success)
100.00%
17 / 17
<?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;
    }
}