/** * Invoke method call * * @param string method name * @param var vars * @return var answer * @throws lang.IllegalArgumentException * @throws webservices.soap.SOAPFaultException */ public function invoke() { if (!$this->transport instanceof SOAPHTTPTransport) { throw new IllegalArgumentException('Transport must be a webservices.soap.transport.SOAPHTTPTransport'); } $args = func_get_args(); $message = new XPSoapMessage(); $message->setEncoding($this->encoding); $message->createCall($this->action, array_shift($args), $this->targetNamespace, $this->headers); $message->setMapping($this->mapping); $message->setData($args); // Send if (FALSE == ($response = $this->transport->send($message))) { return FALSE; } // Response if (FALSE == ($answer = $this->transport->retrieve($response))) { return FALSE; } $answer->setMapping($this->mapping); $data = $answer->getData(); if (sizeof($data) == 1) { return current($data); } if (sizeof($data) == 0) { return NULL; } return $data; }