public function match(array $server = [], array $post)
    {
        $requestMethod = $server['REQUEST_METHOD'];
        $requestUri = $server['REQUEST_URI'];

        $restMethod = $this->getRestfullMethod($post);

        // check if REST request is made
        if (null === $restMethod && !in_array($requestMethod, array_keys($this->routes))) {
            return false;
        }

        $method = $restMethod ?: $requestMethod;

        foreach ($this->routes[$method]  as $resource) {
            $args = [];
            $route = key($resource);
            $handler = reset($resource);

            if (preg_match(self::REGVAL, $route)) {
                list($args, , $route) = $this->parseRegexRoute($requestUri, $route);
            }

            if (!preg_match("#^$route$#", $requestUri)) {
                unset($this->routes[$method]);
                continue;
            }

            if (is_string($handler) && strpos($handler, '@')) {
                list($ctrl, $method) = explode('@', $handler);

                return ['controller' => $ctrl, 'method' => $method, 'args' => $args];
            }

            if (empty($args)) {
                return $handler();
            }

            return call_user_func_array($handler, $args);
        }
    }
public function match(array $server = [], array $post)
    {
        $requestMethod = $server['REQUEST_METHOD'];
        $requestUri = $server['REQUEST_URI'];

        $restMethod = $this->getRestfullMethod($post);

        // check if REST request is made
        if (null === $restMethod && !in_array($requestMethod, array_keys($this->routes))) {
            return false;
        }

        $method = $restMethod ?: $requestMethod;

        foreach ($this->routes[$method]  as $resource) {
            $args = [];
            $route = key($resource);
            $handler = reset($resource);

            if (preg_match(self::REGVAL, $route)) {
                list($args, , $route) = $this->parseRegexRoute($requestUri, $route);
            }

            if (!preg_match("#^$route$#", $requestUri)) {
                unset($this->routes[$method]);
                continue;
            }

            if (is_string($handler) && strpos($handler, '@')) {
                list($ctrl, $method) = explode('@', $handler);

                return ['controller' => $ctrl, 'method' => $method, 'args' => $args];
            }

            if (empty($args)) {
                return $handler();
            }

            return call_user_func_array($handler, $args);
        }
    }
public function match ( array $ server = [ ] , array $ post ) { $ requestMethod = $ server [ 'REQUEST_METHOD' ] ; $ requestUri = $ server [ 'REQUEST_URI' ] ; $ restMethod = $ this -> getRestfullMethod ( $ post ) ; // check if REST request is made if ( null === $ restMethod && ! in_array ( $ requestMethod , array_keys ( $ this -> routes ) ) ) { return false ; } $ method = $ restMethod ? : $ requestMethod ; foreach ( $ this -> routes [ $ method ] as $ resource ) { $ args = [ ] ; $ route = key ( $ resource ) ; $ handler = reset ( $ resource ) ; if ( preg_match ( self :: REGVAL , $ route ) ) { list ( $ args , , $ route ) = $ this -> parseRegexRoute ( $ requestUri , $ route ) ; } if ( ! preg_match ( "#^$route$#" , $ requestUri ) ) { unset ( $ this -> routes [ $ method ] ) ; continue ; } if ( is_string ( $ handler ) && strpos ( $ handler , '@' ) ) { list ( $ ctrl , $ method ) = explode ( '@' , $ handler ) ; return [ 'controller' => $ ctrl , 'method' => $ method , 'args' => $ args ] ; } if ( empty ( $ args ) ) { return $ handler ( ) ; } return call_user_func_array ( $ handler , $ args ) ; } }
Match if URL matches a route definition.

@param array $server
@param array $post
Match if URL matches a route definition .