ILIAS  release_5-4 Revision v5.4.26-12-gabc799a52e6
functions.php
Go to the documentation of this file.
1<?php
2
3namespace FastRoute;
4
5if (!function_exists('FastRoute\simpleDispatcher')) {
12 function simpleDispatcher(callable $routeDefinitionCallback, array $options = [])
13 {
14 $options += [
15 'routeParser' => 'FastRoute\\RouteParser\\Std',
16 'dataGenerator' => 'FastRoute\\DataGenerator\\GroupCountBased',
17 'dispatcher' => 'FastRoute\\Dispatcher\\GroupCountBased',
18 'routeCollector' => 'FastRoute\\RouteCollector',
19 ];
20
22 $routeCollector = new $options['routeCollector'](
23 new $options['routeParser'], new $options['dataGenerator']
24 );
25 $routeDefinitionCallback($routeCollector);
26
27 return new $options['dispatcher']($routeCollector->getData());
28 }
29
36 function cachedDispatcher(callable $routeDefinitionCallback, array $options = [])
37 {
38 $options += [
39 'routeParser' => 'FastRoute\\RouteParser\\Std',
40 'dataGenerator' => 'FastRoute\\DataGenerator\\GroupCountBased',
41 'dispatcher' => 'FastRoute\\Dispatcher\\GroupCountBased',
42 'routeCollector' => 'FastRoute\\RouteCollector',
43 'cacheDisabled' => false,
44 ];
45
46 if (!isset($options['cacheFile'])) {
47 throw new \LogicException('Must specify "cacheFile" option');
48 }
49
50 if (!$options['cacheDisabled'] && file_exists($options['cacheFile'])) {
51 $dispatchData = require $options['cacheFile'];
52 if (!is_array($dispatchData)) {
53 throw new \RuntimeException('Invalid cache file "' . $options['cacheFile'] . '"');
54 }
55 return new $options['dispatcher']($dispatchData);
56 }
57
58 $routeCollector = new $options['routeCollector'](
59 new $options['routeParser'], new $options['dataGenerator']
60 );
61 $routeDefinitionCallback($routeCollector);
62
64 $dispatchData = $routeCollector->getData();
65 if (!$options['cacheDisabled']) {
66 file_put_contents(
67 $options['cacheFile'],
68 '<?php return ' . var_export($dispatchData, true) . ';'
69 );
70 }
71
72 return new $options['dispatcher']($dispatchData);
73 }
74}
An exception for terminatinating execution or to throw for unit testing.