pruvodce/lib/FastRoute/DataGenerator/CharCountBased.php

40 lines
947 B
PHP

<?php
declare(strict_types=1);
namespace FastRoute\DataGenerator;
use function count;
use function implode;
class CharCountBased extends RegexBasedAbstract
{
protected function getApproxChunkSize(): int
{
return 30;
}
/**
* {@inheritDoc}
*/
protected function processChunk(array $regexToRoutesMap): array
{
$routeMap = [];
$regexes = [];
$suffixLen = 0;
$suffix = '';
$count = count($regexToRoutesMap);
foreach ($regexToRoutesMap as $regex => $route) {
$suffixLen++;
$suffix .= "\t";
$regexes[] = '(?:' . $regex . '/(\t{' . $suffixLen . '})\t{' . ($count - $suffixLen) . '})';
$routeMap[$suffix] = [$route->handler, $route->variables];
}
$regex = '~^(?|' . implode('|', $regexes) . ')$~';
return ['regex' => $regex, 'suffix' => '/' . $suffix, 'routeMap' => $routeMap];
}
}