<?xml version="1.0" encoding="utf-8"?>
<!-- $Revision$ -->
<refentry xml:id="soapserver.addfunction" xmlns="http://docbook.org/ns/docbook" xmlns:xlink="http://www.w3.org/1999/xlink">
 <refnamediv>
  <refname>SoapServer::addFunction</refname>
  <refpurpose>Adds one or more functions to handle SOAP requests</refpurpose>
 </refnamediv>

 <refsect1 role="description">
  &reftitle.description;
  <methodsynopsis role="SoapServer">
   <modifier>public</modifier> <type>void</type><methodname>SoapServer::addFunction</methodname>
   <methodparam><type class="union"><type>array</type><type>string</type><type>int</type></type><parameter>functions</parameter></methodparam>
  </methodsynopsis>
  <para>
   Exports one or more functions for remote clients
  </para>
 </refsect1>

 <refsect1 role="parameters">
  &reftitle.parameters;
  <para>
   <variablelist>
    <varlistentry>
     <term><parameter>functions</parameter></term>
     <listitem>
      <para>
       To export one function, pass the function name into this parameter as
       a string.
      </para>
      <para>
       To export several functions, pass an array of function names.
      </para>
      <para>
       To export all the functions, pass a special constant <constant>SOAP_FUNCTIONS_ALL</constant>.
      </para>
      <note>
       <para>
        <parameter>functions</parameter> 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.
       </para>
      </note>
     </listitem>
    </varlistentry>
   </variablelist>
  </para>
 </refsect1>

 <refsect1 role="returnvalues">
  &reftitle.returnvalues;
  <para>
   &return.void;
  </para>
 </refsect1>

 <refsect1 role="examples">
  &reftitle.examples;
  <para>
   <example>
    <title><function>SoapServer::addFunction</function> example</title>
    <programlisting role="php">
<![CDATA[
<?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);

?>
]]>
    </programlisting>
   </example>
  </para>
 </refsect1>

 <refsect1 role="seealso">
  &reftitle.seealso;
  <para>
   <simplelist>
    <member><methodname>SoapServer::__construct</methodname></member>
    <member><methodname>SoapServer::setClass</methodname></member>
   </simplelist>
  </para>
 </refsect1>

</refentry>
<!-- Keep this comment at the end of the file
Local variables:
mode: sgml
sgml-omittag:t
sgml-shorttag:t
sgml-minimize-attributes:nil
sgml-always-quote-attributes:t
sgml-indent-step:1
sgml-indent-data:t
indent-tabs-mode:nil
sgml-parent-document:nil
sgml-default-dtd-file:"~/.phpdoc/manual.ced"
sgml-exposed-tags:nil
sgml-local-catalogs:nil
sgml-local-ecat-files:nil
End:
vim600: syn=xml fen fdm=syntax fdl=2 si
vim: et tw=78 syn=sgml
vi: ts=1 sw=1
-->
