protected function extractCallbacks(&$args, &$list, &$path)
{
foreach ($args as $k => &$v) {
if (is_array($v)) {
if (sizeof($v) === 2) {
if (isset($v[0]) && is_object($v[0])) {
if (isset($v[1]) && is_string($v[1])) {
$id = ++$this->counter;
if ($this->persistentMode) {
$this->persistentCallbacks[$id] = $v;
} else {
$this->callbacks[$id] = $v;
}
$v = '';
$list[$id] = $path;
$list[$id][] = $k;
continue;
}
}
}
$path[] = $k;
$this->extractCallbacks($v, $list, $path);
array_pop($path);
} elseif ($v instanceof \Closure) {
$id = ++$this->counter;
if ($this->persistentMode) {
$this->persistentCallbacks[$id] = $v;
} else {
$this->callbacks[$id] = $v;
}
$v = '';
$list[$id] = $path;
$list[$id][] = $k;
}
}
}