protected function parse($pattern, $route, $params)
    {
        $pattern = ltrim($pattern, '/');
        if (preg_match_all(self::REGEX, $pattern, $matches, PREG_OFFSET_CAPTURE | PREG_SET_ORDER)) {
            $regex = '~^';
            $variables = [];
            $offset = 0;
            $i = 1;
            foreach ($matches as $match) {
                if ($match[0][1] > $offset) {
                    $regex .= preg_quote(substr($pattern, $offset, $match[0][1] - $offset), '~');
                }
                $variables['d' . $i] = $match[1][0];
                $_regex = isset($match[2][0]) ? $match[2][0] : self::DEFAULT_REGEX;
                $regex .= "(?P<d{$i}>$_regex)";
                $offset = $match[0][1] + strlen($match[0][0]);
                $i++;
            }

            if ($offset != strlen($pattern)) {
                $regex .= preg_quote(substr($pattern, $offset), '~');
            }
            $regex .= '$~';
            $this->_routes['var'][$regex] = [$route, $params, $variables];
        } else {
            $this->_routes['static'][$pattern] = [$route, $params];
        }
    }
protected function parse($pattern, $route, $params)
    {
        $pattern = ltrim($pattern, '/');
        if (preg_match_all(self::REGEX, $pattern, $matches, PREG_OFFSET_CAPTURE | PREG_SET_ORDER)) {
            $regex = '~^';
            $variables = [];
            $offset = 0;
            $i = 1;
            foreach ($matches as $match) {
                if ($match[0][1] > $offset) {
                    $regex .= preg_quote(substr($pattern, $offset, $match[0][1] - $offset), '~');
                }
                $variables['d' . $i] = $match[1][0];
                $_regex = isset($match[2][0]) ? $match[2][0] : self::DEFAULT_REGEX;
                $regex .= "(?P<d{$i}>$_regex)";
                $offset = $match[0][1] + strlen($match[0][0]);
                $i++;
            }

            if ($offset != strlen($pattern)) {
                $regex .= preg_quote(substr($pattern, $offset), '~');
            }
            $regex .= '$~';
            $this->_routes['var'][$regex] = [$route, $params, $variables];
        } else {
            $this->_routes['static'][$pattern] = [$route, $params];
        }
    }
protected function parse ( $ pattern , $ route , $ params ) { $ pattern = ltrim ( $ pattern , '/' ) ; if ( preg_match_all ( self :: REGEX , $ pattern , $ matches , PREG_OFFSET_CAPTURE | PREG_SET_ORDER ) ) { $ regex = '~^' ; $ variables = [ ] ; $ offset = 0 ; $ i = 1 ; foreach ( $ matches as $ match ) { if ( $ match [ 0 ] [ 1 ] > $ offset ) { $ regex .= preg_quote ( substr ( $ pattern , $ offset , $ match [ 0 ] [ 1 ] - $ offset ) , '~' ) ; } $ variables [ 'd' . $ i ] = $ match [ 1 ] [ 0 ] ; $ _regex = isset ( $ match [ 2 ] [ 0 ] ) ? $ match [ 2 ] [ 0 ] : self :: DEFAULT_REGEX ; $ regex .= "(?P<d{$i}>$_regex)" ; $ offset = $ match [ 0 ] [ 1 ] + strlen ( $ match [ 0 ] [ 0 ] ) ; $ i ++ ; } if ( $ offset != strlen ( $ pattern ) ) { $ regex .= preg_quote ( substr ( $ pattern , $ offset ) , '~' ) ; } $ regex .= '$~' ; $ this -> _routes [ 'var' ] [ $ regex ] = [ $ route , $ params , $ variables ] ; } else { $ this -> _routes [ 'static' ] [ $ pattern ] = [ $ route , $ params ] ; } }
Parses a route string that does not contain optional segments.
Parses a route string that does not contain optional segments .