CLASS Dispatcher EXTENDS StaticObject
{
protected static function prototypeRun($request, $options)
{
$class = get_called_class();
$params = compact('request', 'options');
$router = 'bla\blaz\Router';
$result = $router.'::process('.$request.')';
//if (($result = $router::process($request)) instanceof Response)
return $result;
$params = $class::applyRules($result->params);
if(!$params)
throw new DispatchException('Could not route request.');
$callable = $class::ctrl($result, $params, $options);
return $class::dispatch($callable, $result, $params);
}
public static function run($request, array $options = array())
{
//$params = compact('request', 'options');
return static::prototype(__FUNCTION__, get_defined_vars());
}
protected static function prototypeCtrl($request, $params, $options)
{
var_dump('_CALLABLE: void');
var_dump(func_get_args());
}
protected static function ctrl($request, $params, $options)
{
return static::prototype(__FUNCTION__, get_defined_vars());
}
protected static function prototypeDispatch($callable, $request, $params)
{
if(is_callable($callable))
return $callable($request, $params);
var_dump('_CALL');
var_dump(func_get_args());
return 'lala';
}
protected static function dispatch($callable, $request, $params)
{
return static::prototype(__FUNCTION__, get_defined_vars());
}
}
CLASS StaticObject
{
public static function prototype($__function, array $__parameters = [])
{
$__class = get_called_class();
if(isset($__parameters['this']))
unset($__parameters['this']);
if(TRUE === static::Core_StaticObject_tAdapter_exists($__function))
return static::Core_StaticObject_tAdapter_emit($__function, $__parameters);
$__parameters = static::Core_StaticObject_tFilter_emit($__function, 'PARAMS', $__parameters, ['return' => $__parameters]);
static::Core_StaticObject_tSignal_emit($__function, 'PRE_EVENT', [$__parameters], ['return' => $__parameters]);
$__result = static::Core_StaticObject_tMethodFacade_emit($__function, $__parameters, function(array $__params, Filter $__chain) use ($__class, $__function)
{
$result = NULL;
if(TRUE === static::Core_StaticObject_tMethod_exists($__function))
{
$result = static::Core_StaticObject_tMethod_emit($__function, $__params);
}
else
if(TRUE === static::Core_StaticObject_tMethodProto_exists($__function))
{
$result = static::Core_StaticObject_tMethodProto_emit($__function, $params);
}
else
{
$proto = 'prototype'.$__function;
if($proto === $__function)
{
}
else
if(method_exists($__class, $proto))
{
$result = static::Core_StaticObject_tInvoke_method('prototype'.$__function, $__params);
}
}
return $result;
});
$__result = static::Core_StaticObject_tFilter_emit($__function, 'RETURN', $__result, ['return' => $__result]);
static::Core_StaticObject_tObserver_emit($__function, [$__result, $__parameters]);
static::Core_StaticObject_tSignal_emit($__function, 'POST_EVENT', [$__result, $__parameters], ['return' => $__result]);
return $__result;
}
...
Comments