ICanBoogie/bind-http v2.6.0
  • Namespace
  • Class

Namespaces

  • ICanBoogie
    • Binding
      • HTTP

Classes

  • AbstractDispatcherConstructor
  • Hooks
  • ProvideDispatcher

Interfaces

  • DispatcherConfig

Traits

  • CoreBindings
  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 116 117 118 119 120 121 122 123 124 
<?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\Binding\HTTP;

use ICanBoogie\Core;
use ICanBoogie\HTTP;
use ICanBoogie\HTTP\Dispatcher;
use ICanBoogie\HTTP\DispatcherProvider;
use ICanBoogie\HTTP\Request;

class Hooks
{
    /*
     * Autoconfig
     */

    static public function synthesize_dispatchers_config(array $fragments)
    {
        $config_array = [];

        foreach ($fragments as $fragment)
        {
            if (empty($fragment['dispatchers']))
            {
                continue;
            }

            $config_array[] = $fragment['dispatchers'];
        }

        $config = call_user_func_array('array_merge', $config_array);

        #
        # Normalizing
        #

        array_walk($config, function(&$config) {

            if (is_string($config))
            {
                $config = [ DispatcherConfig::CONSTRUCTOR => $config, ];
            }

            $config += [ DispatcherConfig::WEIGHT => 0 ];

        });

        #
        # Ordering
        #

        return \ICanBoogie\sort_by_weight($config, function($config) {

            return $config[DispatcherConfig::WEIGHT];

        });
    }

    /*
     * Prototype
     */

    /**
     * Returns the initial request object.
     *
     * @return Request
     */
    static public function core_get_initial_request()
    {
        return HTTP\get_initial_request();
    }

    /**
     * Returns the current request.
     *
     * @param Core $app
     *
     * @return Request
     */
    static public function core_get_request(Core $app)
    {
        return Request::get_current_request() ?: $app->initial_request;
    }

    /**
     * Returns the request dispatcher.
     *
     * @return Dispatcher
     */
    static public function core_get_dispatcher()
    {
        return HTTP\get_dispatcher();
    }

    /*
     * Event
     */

    /**
     * Defines the request dispatcher provider.
     *
     * @param Core\ConfigureEvent $event
     * @param Core $app
     */
    static public function on_core_configure(Core\ConfigureEvent $event, Core $app)
    {
        if (DispatcherProvider::defined())
        {
            return;
        }

        DispatcherProvider::define(new ProvideDispatcher($app));
    }
}
ICanBoogie/bind-http v2.6.0 API documentation generated by ApiGen