ICanBoogie/HTTP v2.4.0
  • Namespace
  • Class

Namespaces

  • ICanBoogie
    • Exception
    • HTTP
      • Dispatcher
      • Headers
      • Request

Classes

  • CallableDispatcher
  • Dispatcher
  • File
  • FileInfo
  • FileList
  • Headers
  • Helpers
  • RedirectResponse
  • Request
  • Response
  • Status
  • WeightedDispatcher

Interfaces

  • DispatcherInterface
  • Exception

Exceptions

  • DispatcherNotDefined
  • ForceRedirect
  • MethodNotSupported
  • NotFound
  • ServiceUnavailable
  • StatusCodeNotValid

Functions

  • dispatch
  • get_dispatcher
  • get_initial_request
  1   2   3   4   5   6   7   8   9  10  11  12  13  14  15  16  17  18  19  20  21  22  23  24  25  26  27  28  29  30  31  32  33  34  35  36  37  38  39  40  41  42  43  44  45  46  47  48  49  50  51  52  53  54  55  56  57  58  59  60  61  62  63  64  65  66  67  68  69  70  71  72  73  74  75  76  77  78  79  80  81  82  83  84  85  86  87  88  89  90  91  92  93  94  95  96  97  98  99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 
<?php

/*
 * This file is part of the ICanBoogie package.
 *
 * (c) Olivier Laviale <olivier.laviale@gmail.com>
 *
 * For the full copyright and license information, please view the LICENSE
 * file that was distributed with this source code.
 */

namespace ICanBoogie\HTTP;

/**
 * Patchable helpers of the HTTP package.
 *
 * The following helpers can be patched:
 *
 * - {@link dispatch}
 * - {@link get_dispatcher}
 */
class Helpers
{
    static private $jumptable = [

        'dispatch' =>            [ __CLASS__, 'dispatch' ],
        'get_dispatcher' =>      [ __CLASS__, 'get_dispatcher' ],
        'get_initial_request' => [ __CLASS__, 'get_initial_request' ]

    ];

    /**
     * Calls the callback of a patchable function.
     *
     * @param string $name Name of the function.
     * @param array $arguments Arguments.
     *
     * @return mixed
     */
    static public function __callStatic($name, array $arguments)
    {
        return call_user_func_array(self::$jumptable[$name], $arguments);
    }

    /**
     * Patches a patchable function.
     *
     * @param string $name Name of the function.
     * @param callable $callback Callback.
     *
     * @return callable Previous callable.
     *
     * @throws \LogicException in attempt to patch an undefined function.
     */
    static public function patch($name, $callback)
    {
        if (empty(self::$jumptable[$name]))
        {
            throw new \LogicException("Undefined patchable: $name.");
        }

        $previous = self::$jumptable[$name];

        self::$jumptable[$name] = $callback;

        return $previous;
    }

    /*
     * Fallbacks
     */

    /**
     * Fallback for the {@link get_dispatcher()} function.
     */
    static private function get_dispatcher()
    {
        static $dispatcher;

        if (!$dispatcher)
        {
            $dispatcher = new Dispatcher;
        }

        return $dispatcher;
    }

    /**
     * Fallback for the {@link dispatch()} function.
     *
     * @param Request $request
     */
    static private function dispatch(Request $request)
    {
        $dispatcher = get_dispatcher();

        return $dispatcher($request);
    }

    /**
     * Fallback for the {@link get_initial_request()} function.
     */
    static private function get_initial_request()
    {
        static $request;

        if (!$request)
        {
            $request = Request::from($_SERVER);
        }

        return $request;
    }
}
ICanBoogie/HTTP v2.4.0 API documentation generated by ApiGen