<?php
include_once $_SERVER['DOCUMENT_ROOT'] . '/include/shared-manual.inc';
$TOC = array();
$TOC_DEPRECATED = array();
$PARENTS = array();
include_once dirname(__FILE__) ."/toc/class.soapserver.inc";
$setup = array (
  'home' => 
  array (
    0 => 'index.php',
    1 => 'PHP Manual',
  ),
  'head' => 
  array (
    0 => 'UTF-8',
    1 => 'en',
  ),
  'this' => 
  array (
    0 => 'soapserver.addfunction.php',
    1 => 'SoapServer::addFunction',
    2 => 'Adds one or more functions to handle SOAP requests',
  ),
  'up' => 
  array (
    0 => 'class.soapserver.php',
    1 => 'SoapServer',
  ),
  'prev' => 
  array (
    0 => 'class.soapserver.php',
    1 => 'SoapServer',
  ),
  'next' => 
  array (
    0 => 'soapserver.addsoapheader.php',
    1 => 'SoapServer::addSoapHeader',
  ),
  'alternatives' => 
  array (
  ),
  'source' => 
  array (
    'lang' => 'en',
    'path' => 'reference/soap/soapserver/addfunction.xml',
  ),
  'history' => 
  array (
  ),
);
$setup["toc"] = $TOC;
$setup["toc_deprecated"] = $TOC_DEPRECATED;
$setup["parents"] = $PARENTS;
manual_setup($setup);

contributors($setup);

?>
<div id="soapserver.addfunction" class="refentry">
 <div class="refnamediv">
  <h1 class="refname">SoapServer::addFunction</h1>
  <p class="verinfo">(PHP 5, PHP 7, PHP 8)</p><p class="refpurpose"><span class="refname">SoapServer::addFunction</span> &mdash; <span class="dc-title">Adds one or more functions to handle SOAP requests</span></p>

 </div>

 <div class="refsect1 description" id="refsect1-soapserver.addfunction-description">
  <h3 class="title">Description</h3>
  <div class="methodsynopsis dc-description">
   <span class="modifier">public</span> <span class="methodname"><strong>SoapServer::addFunction</strong></span>(<span class="methodparam"><span class="type"><span class="type"><a href="language.types.array.php" class="type array">array</a></span>|<span class="type"><a href="language.types.string.php" class="type string">string</a></span>|<span class="type"><a href="language.types.integer.php" class="type int">int</a></span></span> <code class="parameter">$functions</code></span>): <span class="type"><a href="language.types.void.php" class="type void">void</a></span></div>

  <p class="para rdfs-comment">
   Exports one or more functions for remote clients
  </p>
 </div>


 <div class="refsect1 parameters" id="refsect1-soapserver.addfunction-parameters">
  <h3 class="title">Parameters</h3>
  <p class="para">
   <dl>
    
     <dt><code class="parameter">functions</code></dt>
     <dd>
      <p class="para">
       To export one function, pass the function name into this parameter as
       a string.
      </p>
      <p class="para">
       To export several functions, pass an array of function names.
      </p>
      <p class="para">
       To export all the functions, pass an array of function names.
      </p>
      <span class="simpara">
       As of PHP 8.4.0, passing an <span class="type"><a href="language.types.integer.php" class="type int">int</a></span> value (including
       <strong><code><a href="soap.constants.php#constant.soap-functions-all">SOAP_FUNCTIONS_ALL</a></code></strong>) is deprecated.
       Use <span class="function"><a href="function.get-defined-functions.php" class="function">get_defined_functions()</a></span> to retrieve all functions
       and pass them as an array instead.
      </span>
      <blockquote class="note"><p><strong class="note">Note</strong>: 
       <p class="para">
        <code class="parameter">functions</code> 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.
       </p>
      </p></blockquote>
     </dd>
    
   </dl>
  </p>
 </div>


 <div class="refsect1 returnvalues" id="refsect1-soapserver.addfunction-returnvalues">
  <h3 class="title">Return Values</h3>
  <p class="para">
   No value is returned.
  </p>
 </div>

 <div class="refsect1 changelog" id="refsect1-soapserver.addfunction-changelog">
  <h3 class="title">Changelog</h3>
  <table class="doctable informaltable">
   
    <thead>
     <tr>
      <th>Version</th>
      <th>Description</th>
     </tr>

    </thead>

    <tbody class="tbody">
     <tr>
      <td>8.4.0</td>
      <td>
       Passing an <span class="type"><a href="language.types.integer.php" class="type int">int</a></span> to
       <span class="methodname"><strong>SoapServer::addFunction()</strong></span>,
       including <strong><code><a href="soap.constants.php#constant.soap-functions-all">SOAP_FUNCTIONS_ALL</a></code></strong>, has been deprecated.
      </td>
     </tr>

    </tbody>
   
  </table>

 </div>


 <div class="refsect1 examples" id="refsect1-soapserver.addfunction-examples">
  <h3 class="title">Examples</h3>
  <p class="para">
   <div class="example" id="example-1">
    <p><strong>Example #1 <span class="function"><strong>SoapServer::addFunction()</strong></span> example</strong></p>
    <div class="example-contents">
<div class="phpcode"><code><span style="color: #000000"><span style="color: #0000BB">&lt;?php<br /><br /></span><span style="color: #007700">function </span><span style="color: #0000BB">echoString</span><span style="color: #007700">(</span><span style="color: #0000BB">$inputString</span><span style="color: #007700">)<br />{<br />    return </span><span style="color: #0000BB">$inputString</span><span style="color: #007700">;<br />}<br /><br /></span><span style="color: #0000BB">$server</span><span style="color: #007700">-&gt;</span><span style="color: #0000BB">addFunction</span><span style="color: #007700">(</span><span style="color: #DD0000">"echoString"</span><span style="color: #007700">);<br /><br />function </span><span style="color: #0000BB">echoTwoStrings</span><span style="color: #007700">(</span><span style="color: #0000BB">$inputString1</span><span style="color: #007700">, </span><span style="color: #0000BB">$inputString2</span><span style="color: #007700">)<br />{<br />    return array(</span><span style="color: #DD0000">"outputString1" </span><span style="color: #007700">=&gt; </span><span style="color: #0000BB">$inputString1</span><span style="color: #007700">,<br />                 </span><span style="color: #DD0000">"outputString2" </span><span style="color: #007700">=&gt; </span><span style="color: #0000BB">$inputString2</span><span style="color: #007700">);<br />}<br /></span><span style="color: #0000BB">$server</span><span style="color: #007700">-&gt;</span><span style="color: #0000BB">addFunction</span><span style="color: #007700">(array(</span><span style="color: #DD0000">"echoString"</span><span style="color: #007700">, </span><span style="color: #DD0000">"echoTwoStrings"</span><span style="color: #007700">));<br /><br /></span><span style="color: #0000BB">$functions </span><span style="color: #007700">= </span><span style="color: #0000BB">array_merge</span><span style="color: #007700">(...</span><span style="color: #0000BB">get_defined_functions</span><span style="color: #007700">());<br /></span><span style="color: #0000BB">$server</span><span style="color: #007700">-&gt;</span><span style="color: #0000BB">addFunction</span><span style="color: #007700">(</span><span style="color: #0000BB">$functions</span><span style="color: #007700">);<br /><br /></span><span style="color: #0000BB">?&gt;</span></span></code></div>
    </div>

   </div>
  </p>
 </div>


 <div class="refsect1 seealso" id="refsect1-soapserver.addfunction-seealso">
  <h3 class="title">See Also</h3>
  <p class="para">
   <ul class="simplelist">
    <li><span class="methodname"><a href="soapserver.construct.php" class="methodname" rel="rdfs-seeAlso">SoapServer::__construct()</a> - SoapServer constructor</span></li>
    <li><span class="methodname"><a href="soapserver.setclass.php" class="methodname" rel="rdfs-seeAlso">SoapServer::setClass()</a> - Sets the class which handles SOAP requests</span></li>
   </ul>
  </p>
 </div>


</div><?php manual_footer($setup); ?>