public function addAsync()
{
$args_num = func_num_args();
$args = func_get_args();
switch ($args_num) {
case 1:
if (is_callable($args[0])) {
return $this->addAsyncFunction($args[0]);
} elseif (is_array($args[0])) {
return $this->addAsyncFunctions($args[0]);
} elseif (is_object($args[0])) {
return $this->addAsyncInstanceMethods($args[0]);
} elseif (is_string($args[0])) {
return $this->addAsyncClassMethods($args[0]);
}
break;
case 2:
if (is_callable($args[0]) && is_string($args[1])) {
return $this->addAsyncFunction($args[0], $args[1]);
} elseif (is_string($args[0])) {
if (is_string($args[1]) && !is_callable(array($args[1], $args[0]))) {
if (class_exists($args[1])) {
return $this->addAsyncClassMethods($args[0], $args[1]);
}
return $this->addAsyncClassMethods($args[0], '', $args[1]);
}
return $this->addAsyncMethod($args[0], $args[1]);
} elseif (is_array($args[0])) {
if (is_array($args[1])) {
return $this->addAsyncFunctions($args[0], $args[1]);
}
return $this->addAsyncMethods($args[0], $args[1]);
} elseif (is_object($args[0])) {
return $this->addAsyncInstanceMethods($args[0], $args[1]);
}
break;
case 3:
if (is_callable($args[0]) && $args[1] == '' && is_string($args[2])) {
return $this->addAsyncFunction($args[0], $args[2]);
} elseif (is_string($args[0]) && is_string($args[2])) {
if (is_string($args[1]) && !is_callable(array($args[1], $args[0]))) {
return $this->addAsyncClassMethods($args[0], $args[1], $args[2]);
}
return $this->addAsyncMethod($args[0], $args[1], $args[2]);
} elseif (is_array($args[0])) {
if ($args[1] == '' && is_array($args[2])) {
return $this->addAsyncFunctions($args[0], $args[2]);
}
return $this->addAsyncMethods($args[0], $args[1], $args[2]);
} elseif (is_object($args[0])) {
return $this->addAsyncInstanceMethods($args[0], $args[1], $args[2]);
}
break;
}
throw new Exception('Wrong arguments');
}