PHP: SoapServer->addFunction() - Manual

downloads | documentation | faq | getting help | mailing lists | reporting bugs | php.net sites | links | conferences | my php.net

search for in the

SoapServer->__construct() SoapParam->__construct()

Last updated: Sat, 27 Jan 2007

view this page in

# SoapServer->addFunction()

(no version information, might be only in CVS)

SoapServer->addFunction() -- Adds one or several functions those will handle SOAP requests

## Описание

class SoapServer {
void addFunction ( mixed functions )
}

Exports one or more functions for remote clients.

## Список параметров

`functions`

  To export one function, pass the function name into this parameter as a string.

  To export several functions, pass an array of function names.

  To export all the functions, pass a special constant `SOAP_FUNCTIONS_ALL`.

  > Замечание: `functions` must receive all input arguments in the same order as defined in the WSDL file (They should not receive any output parameters as arguments) and return one or more values. To return several values they must return an array with named output parameters.

## Возвращаемые значения

Эта функция не возвращает значения после выполнения.

## Примеры

Пример 1. Some examples

`<?php
function echoString($inputString)
{
return $inputString;
}
$server->addFunction("echoString");
function echoTwoStrings($inputString1, $inputString2)
{
return array("outputString1" => $inputString1,
"outputString2" => $inputString2);
}
$server->addFunction(array("echoString", "echoTwoStrings"));
$server->addFunction(SOAP_FUNCTIONS_ALL);
?>`

## Смотрите также

SoapServer->__construct()
SoapServer->setClass()

add a note User Contributed Notes
SoapServer->addFunction()
Evan Borgstrom
23-Aug-2006 03:42
`In response to comment by Nathan O'Sullivan about returning (or passing) a complex type, you can also use the stdClass() object.
Assume you define a complex type like so:
<xsd:complexType name="TestType">
<xsd:all>
<xsd:element name="A" type="xsd:string" />
<xsd:element name="B" type="xsd:int" />
<xsd:element name="C" type="xsd:boolean" />
</xsd:all>
</xsd:complexType>
To use an object in place of an array you can do:
$test = new stdClass();
$test->A = "test string";
$test->B = 45;
$test->C = false;
$result = $client->Test($test);`
15-Jun-2005 05:10
`function Login($username, $password)
{
return array("LoginResult" => array("Id"=>1, "Name"=>"Nathan", "Nickname"=>"Nathan", "Email"=>"email address") );
}
Ok, Only a litte error in the last note.. :
"LoginResult" => array and NOT "LoginResult" , array`
Nathan O'Sullivan
28-Apr-2005 11:36
`You may be left wondering, as I was, how to return a complex type - consider the following WSDL snippets, for a method called Login:
<xs:element name="Login">
<xs:complexType>
<xs:sequence>
<xs:element minOccurs="0" maxOccurs="1" name="username" type="xs:string" />
<xs:element minOccurs="0" maxOccurs="1" name="password" type="xs:string" />
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:complexType name="UserInfo">
<xs:sequence>
<xs:element minOccurs="0" maxOccurs="1" name="Id" type="xs:string" />
<xs:element minOccurs="0" maxOccurs="1" name="Name" type="xs:string" />
<xs:element minOccurs="0" maxOccurs="1" name="Nickname" type="xs:string" />
<xs:element minOccurs="0" maxOccurs="1" name="Email" type="xs:string" />
</xs:sequence>
</xs:complexType>
<xs:element name="LoginResponse">
<xs:complexType>
<xs:sequence>
<xs:element minOccurs="0" maxOccurs="1" name="LoginResult" type="s0:UserInfo" />
</xs:sequence>
</xs:complexType>
</xs:element>
Here's a working Login function that I've added with add SoapServer::addFunction
function Login($username, $password)
{
return array("LoginResult", array("Id"=>1, "Name"=>"Nathan", "Nickname"=>"Nathan", "Email"=>"email address") );
}
The UserInfo complextype is represented by the inner array. The outer array has just one element, "LoginResult". The LogineResponse element seems to be treated as a one-member array by PHP.`
add a note
SoapServer->__construct() SoapParam->__construct()

Last updated: Sat, 27 Jan 2007
show source | credits | stats | sitemap | contact | advertising | mirror sites
Copyright © 2001-2007 The PHP Group
All rights reserved.
This mirror generously provided by: Yahoo! Inc.
Last updated: Sat Mar 10 10:36:09 2007 PST