Proyectos de Subversion Moodle

Rev

| Ultima modificación | Ver Log |

Rev Autor Línea Nro. Línea
1441 ariadna 1
<?php
2
 
3
namespace FastRoute;
4
 
5
if (!function_exists('FastRoute\simpleDispatcher')) {
6
    /**
7
     * @param callable $routeDefinitionCallback
8
     * @param array $options
9
     *
10
     * @return Dispatcher
11
     */
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
 
21
        /** @var RouteCollector $routeCollector */
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
 
30
    /**
31
     * @param callable $routeDefinitionCallback
32
     * @param array $options
33
     *
34
     * @return Dispatcher
35
     */
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
 
63
        /** @var RouteCollector $routeCollector */
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
}