protected static function aspectable($__function, array $__parameters = [], $__prototype = NULL)
{
$__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) use ($__class, $__function, $__prototype)
{
$result = NULL;
if(TRUE === static::Core_StaticObject_tMethodProto_exists($__function))
return static::Core_StaticObject_tMethodProto_emit($__function, $__params);
if(NULL !== $__prototype)
{
$proto = Invoke::normalize($__prototype, $__class);
if($proto[0] === $__class
&& isset($proto[1])
&& is_string($proto[1]))
return static::Core_StaticObject_tInvoke_method($proto[1], $__params);
return isset($proto[1])
? Invoke::emit($proto[0], $proto[1], $__params)
: Invoke::emit($proto[0], $__params);
}
return NULL;
});
$__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