Source for file example_server.php
Documentation is available at example_server.php
* LICENSE: This source file is subject to version 2.02 of the PHP license,
* that is bundled with this package in the file LICENSE, and is available at
* through the world-wide-web at http://www.php.net/license/2_02.txt. If you
* did not receive a copy of the PHP license and are unable to obtain it
* through the world-wide-web, please send a note to license@php.net so we can
* mail you a copy immediately.
* @author Shane Caraveo <Shane@Caraveo.com> Port to PEAR and more
* @author Jan Schneider <jan@horde.org> Maintenance
* @copyright 2003-2007 The PHP Group
* @license http://www.php.net/license/2_02.txt PHP License 2.02
* @link http://pear.php.net/package/SOAP
require_once 'SOAP/Value.php';
require_once 'SOAP/Fault.php';
require_once dirname (__FILE__ ) . '/example_types.php';
/* Create a class for your SOAP functions. */
class SOAP_Example_Server {
/* The dispatch map does not need to be used, but aids the server class in
* knowing what parameters are used with the functions. This is the ONLY
* way to have multiple OUT parameters. If you use a dispatch map, you
* MUST add ALL functions you wish to allow be called. If you do not use
* a dispatch map, then any public function can be called from SOAP. We
* consider this to be any function in the class unless it starts with
* underscore. If you do not define in/out parameters, the function can
* be called with parameters, but no validation on parameters will
var $__dispatch_map = array ();
function SOAP_Example_Server () {
/* When generating WSDL for a server, you have to define any special
* complex types that you use (ie classes). Using a namespace id
* before the type will create an XML schema with the targetNamespace
* for the type multiple types with the same namespace will appear in
* the same schema section. Types with different namespaces will be
* in seperate schema sections. The following SOAPStruct typedef
* cooresponds to the SOAPStruct class above. */
$this->__typedef['{http://soapinterop.org/xsd}SOAPStruct'] =
array ('varString' => 'string',
/* An aliased function with multiple out parameters. */
$this->__dispatch_map['echoStructAsSimpleTypes'] =
array ('in' => array ('inputStruct' => '{http://soapinterop.org/xsd}SOAPStruct'),
'out' => array ('outputString' => 'string',
'outputInteger' => 'int',
'outputFloat' => 'float'),
'alias' => 'myEchoStructAsSimpleTypes');
$this->__dispatch_map['echoStringSimple'] =
array ('in' => array ('inputStringSimple' => 'string'),
'out' => array ('outputStringSimple' => 'string'));
$this->__dispatch_map['echoString'] =
array ('in' => array ('inputString' => 'string'),
'out' => array ('outputString' => 'string'));
$this->__dispatch_map['divide'] =
array ('in' => array ('dividend' => 'int',
'out' => array ('outputFloat' => 'float'));
$this->__dispatch_map['echoStruct'] =
array ('in' => array ('inputStruct' => '{http://soapinterop.org/xsd}SOAPStruct'),
'out' => array ('outputStruct' => '{http://soapinterop.org/xsd}SOAPStruct'));
$this->__dispatch_map['echoMimeAttachment'] =
array ('in' => array ('stuff' => 'string'),
'out' => array ('outputMime' => 'string'));
/* This private function is called on by SOAP_Server to determine any
* special dispatch information that might be necessary. This, for
* example, can be used to set up a dispatch map for functions that return
* multiple OUT parameters. */
function __dispatch ($methodname)
if (isset ($this->__dispatch_map[$methodname])) {
return $this->__dispatch_map[$methodname];
/* A simple echoString function. */
function echoStringSimple ($inputString)
/* An explicit echoString function. */
function echoString ($inputString)
return new SOAP_Value('outputString', 'string', $inputString);
function divide ($dividend, $divisor)
/* The SOAP server would normally catch errors like this and return a
* fault, but this is how you do it yourself. */
return new SOAP_Fault('You cannot divide by zero', 'Client');
return $dividend / $divisor;
function echoStruct ($inputStruct)
return $inputStruct->__to_soap ('outputStruct');
* Takes a SOAPStruct as input, and returns each of its elements as OUT
* This function is also aliased so you have to call it as
* echoStructAsSimpleTypes.
* SOAPStruct is defined as:
function myEchoStructAsSimpleTypes ($struct)
/* Convert a SOAPStruct to an array. */
new SOAP_Value('outputString', 'string', $struct->varString ),
new SOAP_Value('outputInteger', 'int', $struct->varInt ),
new SOAP_Value('outputFloat', 'float', $struct->varFloat )
function echoMimeAttachment ($stuff)
'application/octet-stream',
Documentation generated on Mon, 04 Aug 2008 20:00:21 -0400 by phpDocumentor 1.4.0. PEAR Logo Copyright © PHP Group 2004.
|