/** * Sets up LearnableConformity tests */ function setupLearnableConformity(Benchmark $benchmark, $routes, $args) { $argString = implode('/', array_map(function ($i) { return "{arg{$i}}"; }, range(1, $args))); $str = $firstStr = $lastStr = ''; $router = new \Conformity\Router\LearnableCachedRouter(new \Conformity\Router\LearnableFileCache(__DIR__ . '/files/first-route-conformity.php')); for ($i = 0, $str = 'a'; $i < $routes; $i++, $str++) { list($pre, $post) = getRandomParts(); $str = '/' . $pre . '/' . $argString . '/' . $post; if (0 === $i) { $firstStr = str_replace(array('{', '}'), '', $str); } $lastStr = str_replace(array('{', '}'), '', $str); $router->get($str, 'handler' . $i); } $benchmark->register(sprintf('Conformity Learnable - first route (%s routes)', $routes), function () use($router, $firstStr) { $route = $router->dispatch('GET', $firstStr); }); }
<?php require __DIR__ . '/vendor/autoload.php'; $router = new \Conformity\Router\LearnableCachedRouter(new \Conformity\Router\LearnableArrayCache()); $router->addMatcher('numeric', 'is_numeric'); $router->match('GET', '/test', 'handler'); $router->match('GET', 'testing', 'handler'); $router->get('/gettest', 'handler'); $router->post('posttest', 'handler'); $router->put('/puttest', 'handler'); $router->patch('/patchtest', 'handler'); $router->delete('/deletetest', 'handler'); $router->any('/anytest', 'handler'); $router->get('/multiple/segments/test', 'handler'); $router->get('/multiple/segments/test/{optional?}', 'is_numeric'); $router->get('http://{subdomain|numeric}.test.com/multiple/segments/test/{optional?}', 'is_numeric'); $router->get('/multiple/{inmiddle}/test/{optional}/{segments?}', 'handler'); $router->get('/a/test/{inmiddle}/optional-{name}.{extension}', 'handler'); $router->get('/test/{inmiddle}/optional-{name}.{extension}', ['name' => 'testname', 'callback' => 'handler']); print_r($router->dispatch('GET', '/multiple/segments/test')); print_r($router->dispatch('GET', '/multiple/segments/test/var')); print_r($router->dispatch('GET', '/a/test/with/optional-lee.json')); print_r($router->dispatch('GET', '/multiple/segments/test/hey', 'http://2.test.com')); //print_r($router->dispatch('GET', '/multiple/segments/test/10/')); print_r($router);