You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
30 lines
815 B
30 lines
815 B
<?php
|
|
|
|
namespace FastRoute\Dispatcher;
|
|
|
|
class GroupPosBased extends RegexBasedAbstract {
|
|
public function __construct($data) {
|
|
list($this->staticRouteMap, $this->variableRouteData) = $data;
|
|
}
|
|
|
|
protected function dispatchVariableRoute($routeData, $uri) {
|
|
foreach ($routeData as $data) {
|
|
if (!preg_match($data['regex'], $uri, $matches)) {
|
|
continue;
|
|
}
|
|
|
|
// find first non-empty match
|
|
for ($i = 1; '' === $matches[$i]; ++$i);
|
|
|
|
list($handler, $varNames) = $data['routeMap'][$i];
|
|
|
|
$vars = [];
|
|
foreach ($varNames as $varName) {
|
|
$vars[$varName] = $matches[$i++];
|
|
}
|
|
return [self::FOUND, $handler, $vars];
|
|
}
|
|
|
|
return [self::NOT_FOUND];
|
|
}
|
|
}
|