Exemplo n.º 1
0
 public function testAccessors()
 {
     $compiled = new CompiledRoute('prefix', 'regex', array('tokens'), array(), array(), array(), array(), array('variables'));
     $this->assertEquals('prefix', $compiled->getStaticPrefix(), '__construct() takes a static prefix as its second argument');
     $this->assertEquals('regex', $compiled->getRegex(), '__construct() takes a regexp as its third argument');
     $this->assertEquals(array('tokens'), $compiled->getTokens(), '__construct() takes an array of tokens as its fourth argument');
     $this->assertEquals(array('variables'), $compiled->getVariables(), '__construct() takes an array of variables as its ninth argument');
 }
Exemplo n.º 2
0
 public function testgetPatterngetDefaultsgetOptionsgetRequirements()
 {
     $route = new Route('/{foo}', array('foo' => 'bar'), array('foo' => '\\d+'), array('foo' => 'bar'));
     $compiled = new CompiledRoute($route, 'prefix', 'regex', array('tokens'), array('variables'));
     $this->assertEquals('/{foo}', $compiled->getPattern(), '->getPattern() returns the route pattern');
     $this->assertEquals(array('foo' => 'bar'), $compiled->getDefaults(), '->getDefaults() returns the route defaults');
     $this->assertEquals(array('foo' => '\\d+'), $compiled->getRequirements(), '->getRequirements() returns the route requirements');
     $this->assertEquals(array_merge(array('compiler_class' => 'Symfony\\Component\\Routing\\RouteCompiler'), array('foo' => 'bar')), $compiled->getOptions(), '->getOptions() returns the route options');
 }
Exemplo n.º 3
0
 public function testgetPatterngetDefaultsgetOptionsgetRequirements()
 {
     $route = new Route('/:foo', array('foo' => 'bar'), array('foo' => '\\d+'), array('foo' => 'bar'));
     $compiled = new CompiledRoute($route, 'prefix', 'regex', array('tokens'), array('variables'));
     $this->assertEquals('/:foo', $compiled->getPattern(), '->getPattern() returns the route pattern');
     $this->assertEquals(array('foo' => 'bar'), $compiled->getDefaults(), '->getDefaults() returns the route defaults');
     $this->assertEquals(array('foo' => '\\d+'), $compiled->getRequirements(), '->getRequirements() returns the route requirements');
     $this->assertEquals(array_merge(array('variable_prefixes' => array(':'), 'segment_separators' => array('/', '.'), 'variable_regex' => '[\\w\\d_]+', 'text_regex' => '.+?', 'compiler_class' => 'Symfony\\Component\\Routing\\RouteCompiler'), array('foo' => 'bar')), $compiled->getOptions(), '->getOptions() returns the route options');
 }
Exemplo n.º 4
0
 /**
  * process the route and request and save them.
  *
  * @param Route $route
  *
  * @return Route
  */
 public function addCurrentRouteAndParams(RouteContract $route)
 {
     $this->uri = $route->getUri();
     $uri = preg_replace('/\\{(\\w+?)\\?\\}/', '{$1}', $this->uri);
     /*
      * compile the route with symfony Route Compiler
      */
     $this->compiled = (new SyfonyRoute($uri))->compile();
     /*
      * Matches the current request against the compile route RegEx.
      *
      */
     // decoded request path
     $path = $this->request->createFromGlobals()->decodedPath();
     $decodedPath = "/" === $path ? $path : '/' . $path;
     if (preg_match($this->compiled->getRegex(), $decodedPath, $matches)) {
         /*
          * extract the parameters and set them to the current route parameters
          */
         foreach ($matches as $key => $value) {
             if (is_string($key)) {
                 array_push($this->currentParams, $value);
             }
         }
         /*
          * Set the current route to the route
          */
         $this->currentRoute[$route->getMethods()][$decodedPath] = $route;
         /*
          * add the current route parameters to the current route
          */
         $this->currentRoute[$route->getMethods()][$decodedPath]->setParameters($this->currentParams);
         return $route;
     }
     /*
      * if its a simple route that matches the request, set it to the route and return it
      */
     if ($uri == $decodedPath) {
         if (sizeof($route->getMethods()) > 1) {
             foreach ($route->getMethods() as $method) {
                 $this->currentRoute[$method][$uri] = $route;
             }
         } else {
             $this->currentRoute[$route->getMethods()][$uri] = $route;
         }
     }
 }
 /**
  * Constructs a new compiled route object.
  *
  * This is a ridiculously long set of constructor parameters, but as this
  * object is little more than a collection of values it's not a serious
  * problem. The parent Symfony class does the same, as well, making it
  * difficult to override differently.
  *
  * @param \Symfony\Component\Routing\Route $route
  *   A original Route instance.
  * @param int $fit
  *   The fitness of the route.
  * @param string $fit
  *   The pattern outline for this route.
  * @param int $num_parts
  *   The number of parts in the path.
  * @param string $staticPrefix
  *   The static prefix of the compiled route
  * @param string $regex
  *   The regular expression to use to match this route
  * @param array $tokens
  *   An array of tokens to use to generate URL for this route
  * @param array $pathVariables
  *   An array of path variables
  * @param string|null $hostRegex
  *   Host regex
  * @param array $hostTokens
  *   Host tokens
  * @param array $hostVariables
  *   An array of host variables
  * @param array $variables
  *   An array of variables (variables defined in the path and in the host patterns)
  */
 public function __construct(Route $route, $fit, $pattern_outline, $num_parts, $staticPrefix, $regex, array $tokens, array $pathVariables, $hostRegex = null, array $hostTokens = array(), array $hostVariables = array(), array $variables = array())
 {
     parent::__construct($staticPrefix, $regex, $tokens, $pathVariables, $hostRegex, $hostTokens, $hostVariables, $variables);
     $this->route = $route;
     $this->fit = $fit;
     $this->patternOutline = $pattern_outline;
     $this->numParts = $num_parts;
 }
Exemplo n.º 6
0
 /**
  * Extract the parameter list from the request.
  *
  * @param  \Illuminate\Http\Request  $request
  * @return array
  */
 public function bindParameters(Request $request)
 {
     preg_match($this->compiled->getRegex(), '/' . $request->path(), $matches);
     $parameters = $this->combineMatchesWithKeys(array_slice($matches, 1));
     if (!is_null($this->compiled->getHostRegex())) {
         preg_match($this->compiled->getHostRegex(), $request->getHost(), $matches);
         $parameters = array_merge($this->combineMatchesWithKeys(array_slice($matches, 1)), $parameters);
     }
     return $this->parameters = $this->replaceDefaults($parameters);
 }
Exemplo n.º 7
0
 /**
  * Extract the parameter list from the host part of the request.
  *
  * @param  \Illuminate\Http\Request  $request
  * @param  array  $parameters
  * @return array
  */
 protected function bindHostParameters(Request $request, $parameters)
 {
     preg_match($this->compiled->getHostRegex(), $request->getHost(), $matches);
     return array_merge($this->matchToKeys(array_slice($matches, 1)), $parameters);
 }
 /**
  * {@inheritdoc}
  */
 public function unserialize($serialized)
 {
     parent::unserialize($serialized);
     $data = unserialize($serialized);
     $this->fit = $data['fit'];
     $this->patternOutline = $data['patternOutline'];
     $this->numParts = $data['numParts'];
 }