public static function callHandlers($type, $event, $arguments = array())
{
$result = false;
if (isset(self::$events[$type][$event]))
{
foreach (self::$events[$type][$event] as $key => $handler)
{
if (is_callable($handler))
{
Events::callHandlers('debug', 'error', array('sss'));
$result = call_user_func($handler, $arguments);
}
else
{
self::removeHandler($type, $event, $handler[1], $handler[0]);
Events::callHandlers('debug', 'error', array('handler_not_callable', $key, $type . '::' . $event));
}
}
}
return $result;
}
так вот она зацикливается из за Events::callHandlers('debug', 'error', array('sss')); (стр. 11).. оно то и понятно, функция бесконечно пытается вызвать сама себя. вариант решения - добавить к callHandlers еще один параметр $log = true, а при вызове callHandlers внутри самой себя, проверять на $log === true и ставить этот параметр в false, короче
public static function callHandlers($type, $event, $arguments = array(), $log = true)
{
$result = false;
if (isset(self::$events[$type][$event]))
{
foreach (self::$events[$type][$event] as $key => $handler)
{
if (is_callable($handler))
{
if ($log)
{
Events::callHandlers('debug', 'error', array('sss'), false);
}
$result = call_user_func($handler, $arguments);
}
else
{
self::removeHandler($type, $event, $handler[1], $handler[0]);
Events::callHandlers('debug', 'error', array('handler_not_callable', $key, $type . '::' . $event));
}
}
}
return $result;
}
тогда в этой хери зацикливания не будет, но будет зацикливаться $result = call_user_func($handler, $arguments);
хрен его знает почему.. помогите решить проблему)