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
namespace ICanBoogie\Binding\HTTP;
use ICanBoogie\Core;
use ICanBoogie\HTTP;
use ICanBoogie\HTTP\Dispatcher;
use ICanBoogie\HTTP\DispatcherProvider;
use ICanBoogie\HTTP\Request;
class Hooks
{
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);
array_walk($config, function(&$config) {
if (is_string($config))
{
$config = [ DispatcherConfig::CONSTRUCTOR => $config, ];
}
$config += [ DispatcherConfig::WEIGHT => 0 ];
});
return \ICanBoogie\sort_by_weight($config, function($config) {
return $config[DispatcherConfig::WEIGHT];
});
}
static public function core_get_initial_request()
{
return HTTP\get_initial_request();
}
static public function core_get_request(Core $app)
{
return Request::get_current_request() ?: $app->initial_request;
}
static public function core_get_dispatcher()
{
return HTTP\get_dispatcher();
}
static public function on_core_configure(Core\ConfigureEvent $event, Core $app)
{
if (DispatcherProvider::defined())
{
return;
}
DispatcherProvider::define(new ProvideDispatcher($app));
}
}