protected function namedParameters($uri, $isGroup = false)
    {
        // Reset pattern and parameters to empty array.
        $this->patt = [];
        $this->prams = [];

        // Replace named parameters to regex pattern.
        return preg_replace_callback('/\/\{([a-z-0-9]+)\}\??(:\(?[^\/]+\)?)?/i', function ($m) use ($isGroup) {
            // Check whether validation has been set and whether it exists.
            if (isset($m[2])) {
                $rep = substr($m[2], 1);
                $patt = isset($this->pattern[$rep]) ? $this->pattern[$rep] : '/' . $rep;
            } else {
                $patt = $this->pattern['/?'];
            }
            // Check whether parameter is optional.
            if (strpos($m[0], '?') !== false) {
                $patt = str_replace('/(', '(/', $patt) . '?';
            }

            if ($isGroup) {
                $this->isGroup = true;
                $this->pramsGroup[] = $m[1];
                $this->pattGroup[] = $patt;
            } else {
                $this->prams[] = $m[1];
                $this->patt[] = $patt;
            }

            return $patt;
        }, trim($uri));
    }
protected function namedParameters($uri, $isGroup = false)
    {
        // Reset pattern and parameters to empty array.
        $this->patt = [];
        $this->prams = [];

        // Replace named parameters to regex pattern.
        return preg_replace_callback('/\/\{([a-z-0-9]+)\}\??(:\(?[^\/]+\)?)?/i', function ($m) use ($isGroup) {
            // Check whether validation has been set and whether it exists.
            if (isset($m[2])) {
                $rep = substr($m[2], 1);
                $patt = isset($this->pattern[$rep]) ? $this->pattern[$rep] : '/' . $rep;
            } else {
                $patt = $this->pattern['/?'];
            }
            // Check whether parameter is optional.
            if (strpos($m[0], '?') !== false) {
                $patt = str_replace('/(', '(/', $patt) . '?';
            }

            if ($isGroup) {
                $this->isGroup = true;
                $this->pramsGroup[] = $m[1];
                $this->pattGroup[] = $patt;
            } else {
                $this->prams[] = $m[1];
                $this->patt[] = $patt;
            }

            return $patt;
        }, trim($uri));
    }
protected function namedParameters ( $ uri , $ isGroup = false ) { // Reset pattern and parameters to empty array.
 $ this -> patt = [ ] ; $ this -> prams = [ ] ; // Replace named parameters to regex pattern.
 return preg_replace_callback ( '/\/\{([a-z-0-9]+)\}\??(:\(?[^\/]+\)?)?/i' , function ( $ m ) use ( $ isGroup ) { // Check whether validation has been set and whether it exists.
 if ( isset ( $ m [ 2 ] ) ) { $ rep = substr ( $ m [ 2 ] , 1 ) ; $ patt = isset ( $ this -> pattern [ $ rep ] ) ? $ this -> pattern [ $ rep ] : '/' . $ rep ; } else { $ patt = $ this -> pattern [ '/?' ] ; } // Check whether parameter is optional.
 if ( strpos ( $ m [ 0 ] , '?' ) !== false ) { $ patt = str_replace ( '/(' , '(/' , $ patt ) . '?' ; } if ( $ isGroup ) { $ this -> isGroup = true ; $ this -> pramsGroup [ ] = $ m [ 1 ] ; $ this -> pattGroup [ ] = $ patt ; } else { $ this -> prams [ ] = $ m [ 1 ] ; $ this -> patt [ ] = $ patt ; } return $ patt ; } , trim ( $ uri ) ) ; }
Register a parameter name with validation from route uri.

@param string $uri
@param bool $isGroup

@return mixed
Register a parameter name with validation from route uri .