GroupPosBased.php 823 B

123456789101112131415161718192021222324252627282930313233
  1. <?php
  2. namespace FastRoute\Dispatcher;
  3. class GroupPosBased extends RegexBasedAbstract
  4. {
  5. public function __construct($data)
  6. {
  7. list($this->staticRouteMap, $this->variableRouteData) = $data;
  8. }
  9. protected function dispatchVariableRoute($routeData, $uri)
  10. {
  11. foreach ($routeData as $data) {
  12. if (!preg_match($data['regex'], $uri, $matches)) {
  13. continue;
  14. }
  15. // find first non-empty match
  16. for ($i = 1; '' === $matches[$i]; ++$i);
  17. list($handler, $varNames) = $data['routeMap'][$i];
  18. $vars = [];
  19. foreach ($varNames as $varName) {
  20. $vars[$varName] = $matches[$i++];
  21. }
  22. return [self::FOUND, $handler, $vars];
  23. }
  24. return [self::NOT_FOUND];
  25. }
  26. }