PHP Classes

File: libraries/vendor/nikic/fast-route/src/functions.php

Recommend this page to a friend!
  Classes of Duong Huynh Nghia   PHP Slim Framework 3 Modular Application   libraries/vendor/nikic/fast-route/src/functions.php   Download  
File: libraries/vendor/nikic/fast-route/src/functions.php
Role: Example script
Content type: text/plain
Description: Example script
Class: PHP Slim Framework 3 Modular Application
Create modular applications using Slim Framework
Author: By
Last change:
Date: 6 years ago
Size: 2,542 bytes
 

Contents

Class file image Download
<?php

namespace FastRoute;

if (!
function_exists('FastRoute\simpleDispatcher')) {
   
/**
     * @param callable $routeDefinitionCallback
     * @param array $options
     *
     * @return Dispatcher
     */
   
function simpleDispatcher(callable $routeDefinitionCallback, array $options = []) {
       
$options += [
           
'routeParser' => 'FastRoute\\RouteParser\\Std',
           
'dataGenerator' => 'FastRoute\\DataGenerator\\GroupCountBased',
           
'dispatcher' => 'FastRoute\\Dispatcher\\GroupCountBased',
           
'routeCollector' => 'FastRoute\\RouteCollector',
        ];

       
/** @var RouteCollector $routeCollector */
       
$routeCollector = new $options['routeCollector'](
            new
$options['routeParser'], new $options['dataGenerator']
        );
       
$routeDefinitionCallback($routeCollector);

        return new
$options['dispatcher']($routeCollector->getData());
    }

   
/**
     * @param callable $routeDefinitionCallback
     * @param array $options
     *
     * @return Dispatcher
     */
   
function cachedDispatcher(callable $routeDefinitionCallback, array $options = []) {
       
$options += [
           
'routeParser' => 'FastRoute\\RouteParser\\Std',
           
'dataGenerator' => 'FastRoute\\DataGenerator\\GroupCountBased',
           
'dispatcher' => 'FastRoute\\Dispatcher\\GroupCountBased',
           
'routeCollector' => 'FastRoute\\RouteCollector',
           
'cacheDisabled' => false,
        ];

        if (!isset(
$options['cacheFile'])) {
            throw new \
LogicException('Must specify "cacheFile" option');
        }

        if (!
$options['cacheDisabled'] && file_exists($options['cacheFile'])) {
           
$dispatchData = require $options['cacheFile'];
            if (!
is_array($dispatchData)) {
                throw new \
RuntimeException('Invalid cache file "' . $options['cacheFile'] . '"');
            }
            return new
$options['dispatcher']($dispatchData);
        }

       
$routeCollector = new $options['routeCollector'](
            new
$options['routeParser'], new $options['dataGenerator']
        );
       
$routeDefinitionCallback($routeCollector);

       
/** @var RouteCollector $routeCollector */
       
$dispatchData = $routeCollector->getData();
        if (!
$options['cacheDisabled']) {
           
file_put_contents(
               
$options['cacheFile'],
               
'<?php return ' . var_export($dispatchData, true) . ';'
           
);
        }

        return new
$options['dispatcher']($dispatchData);
    }
}