Hprose\Service::add PHP Метод

add() публичный Метод

public add ( )
    public function add()
    {
        $args_num = func_num_args();
        $args = func_get_args();
        switch ($args_num) {
            case 1:
                if (is_callable($args[0])) {
                    return $this->addFunction($args[0]);
                } elseif (is_array($args[0])) {
                    return $this->addFunctions($args[0]);
                } elseif (is_object($args[0])) {
                    return $this->addInstanceMethods($args[0]);
                } elseif (is_string($args[0])) {
                    return $this->addClassMethods($args[0]);
                }
                break;
            case 2:
                if (is_callable($args[0]) && is_string($args[1])) {
                    return $this->addFunction($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->addClassMethods($args[0], $args[1]);
                        }
                        return $this->addClassMethods($args[0], '', $args[1]);
                    }
                    return $this->addMethod($args[0], $args[1]);
                } elseif (is_array($args[0])) {
                    if (is_array($args[1])) {
                        return $this->addFunctions($args[0], $args[1]);
                    }
                    return $this->addMethods($args[0], $args[1]);
                } elseif (is_object($args[0])) {
                    return $this->addInstanceMethods($args[0], $args[1]);
                }
                break;
            case 3:
                if (is_callable($args[0]) && $args[1] == '' && is_string($args[2])) {
                    return $this->addFunction($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->addClassMethods($args[0], $args[1], $args[2]);
                    }
                    return $this->addMethod($args[0], $args[1], $args[2]);
                } elseif (is_array($args[0])) {
                    if ($args[1] == '' && is_array($args[2])) {
                        return $this->addFunctions($args[0], $args[2]);
                    }
                    return $this->addMethods($args[0], $args[1], $args[2]);
                } elseif (is_object($args[0])) {
                    return $this->addInstanceMethods($args[0], $args[1], $args[2]);
                }
                break;
        }
        throw new Exception('Wrong arguments');
    }