コード例 #1
0
ファイル: Tokenizer.php プロジェクト: rsrodrig/MeetMeSoftware
 /**
  * {@inheritdoc}
  */
 public function tokenize($stringOrRoute, $separator)
 {
     if ($stringOrRoute instanceof RouteInterface) {
         $pattern = $stringOrRoute->getPattern();
         $requirements = $stringOrRoute->getRequirements();
     } else {
         $pattern = $stringOrRoute;
     }
     if (false === strpos($pattern, $separator)) {
         return [];
     }
     $rawTokens = explode($separator, $pattern);
     $tokens = [];
     $requirementsSeen = [];
     $parametersSeen = [];
     foreach ($rawTokens as $i => $rawToken) {
         $token = new Token();
         $split = str_split($rawToken);
         reset($split);
         if (current($split) === '{' && end($split) === '}') {
             $token->setParameter();
             unset($split[0], $split[count($split)]);
         }
         $token->setExpression(implode($split));
         if ($token->isParameter()) {
             $parametersSeen[] = $token->getExpression();
         }
         if ($stringOrRoute instanceof RouteInterface && count($stringOrRoute->getRequirements()) >= 1 && isset($requirements[$token->getExpression()])) {
             $requirementsSeen[] = $token->getExpression();
             $token->setRequirements($requirements[$token->getExpression()]);
         }
         $tokens[$i] = $token;
     }
     return $tokens;
 }
コード例 #2
0
ファイル: TokenTest.php プロジェクト: bretanac93/event
 public function testSetRequirements()
 {
     $token = new Token();
     $token->setRequirements(['foo' => 'bar']);
     $this->assertEquals(['foo' => 'bar'], $this->readProperty($token, 'requirements'));
 }