Registers allowed PHP functions as SOAP operations on a server. This guide demonstrates its use in PHP code and explains when the result or side effect needs extra checks.
What It Does
Registers allowed PHP functions as SOAP operations on a server.
Syntax and Parameters
The examples below show a real call to SoapServer::addFunction with suitable arguments. Read the function call in context: its connection, handle, input data or other prerequisites are created before use.
Requirements: SOAP extension; the corresponding WSDL or service implementation.
Example 1: Core Behavior
SOAP request handling requires a correctly configured endpoint and strict access control.
<?php
class StatusService { public function health(): string { return 'ok'; } }
$server = new SoapServer(null, ['uri' => 'urn:example:service']);
function soapStatus(): string { return "ok"; }
$server->addFunction("soapStatus");
echo "Function registered";
Observe the returned value or changed resource state. A successful function call can still require additional checks before a higher-level operation is considered successful.
Example 2: Alternative or Failure Case
SOAP request handling requires a correctly configured endpoint and strict access control.
<?php
class StatusService { public function health(): string { return 'ready'; } }
$server = new SoapServer(null, ['uri' => 'urn:example:billing']);
function soapStatus(): string { return "ok"; }
$server->addFunction("soapStatus");
echo "Function registered";
Compare the different inputs, environment assumptions or result checks. Do not use a transport-level success value as proof that all business-level requirements were met.
Practical Example: Applying the Rule
SOAP request handling requires a correctly configured endpoint and strict access control.
<?php
class StatusService { public function health(): string { return 'available'; } }
$server = new SoapServer(null, ['uri' => 'urn:example:inventory']);
function soapStatus(): string { return "ok"; }
$server->addFunction("soapStatus");
echo "Function registered";
In an application, convert low-level failures into controlled responses and log only non-sensitive diagnostic context.
Important Behavior and Edge Cases
In non-WSDL mode registration defines the exposed operations; do not register arbitrary global functions.
Comparison with Related Functions or Patterns
| Approach | When it differs |
|---|---|
| SoapServer::addFunction | Registers allowed PHP functions as SOAP operations on a server. |
| Related API or pattern | setClass exposes methods of a handler class instead. |
Common Beginner Mistakes
| Mistake | Correct approach |
|---|---|
| Exposing an unvalidated operation or assuming every WSDL uses the same arguments | In non-WSDL mode registration defines the exposed operations; do not register arbitrary global functions. |
| Substituting a related API without checking its semantics | setClass exposes methods of a handler class instead. |
Key Takeaways
- Registers allowed PHP functions as SOAP operations on a server.
- In non-WSDL mode registration defines the exposed operations; do not register arbitrary global functions.
- setClass exposes methods of a handler class instead.
Select this API or pattern based on its documented behavior and the trust boundaries in your own application, and test all external integrations against their actual deployments.