Start · Sprachen · PHP · Referenz · Soap\Sdl

Soap\Sdl

Klasse

Repräsentiert eine geladene WSDL/SDL-Beschreibung eines SOAP-Dienstes und kapselt die daraus gewonnenen Metadaten.

seit PHP 8.4.0 Kategorie: http

Signatur

class Soap\Sdl

Beschreibung

Soap\Sdl ist Teil der neuen, objektorientierten SOAP-API, die mit PHP 8.4 eingeführt wurde. Instanzen dieser Klasse entstehen beim Laden einer WSDL-Datei und kapseln sämtliche darin beschriebenen Dienst-Metadaten – also Endpunkte, Operationen, Datentypen und Bindungen.

Die Klasse bildet die Grundlage für den typsicheren Umgang mit SOAP-Diensten innerhalb der neuen Soap\-Erweiterung. Statt wie bisher auf magische Methodenaufrufe über SoapClient angewiesen zu sein, können Entwickler die SDL-Beschreibung explizit laden und übergeben, was das Debugging und die IDE-Unterstützung erheblich verbessert.

Objekte dieses Typs werden in der Regel nicht direkt instanziiert, sondern über Fabrikmethoden wie Soap\Sdl::fromFile() oder Soap\Sdl::fromString() erzeugt. Die geparste Beschreibung lässt sich anschließend an einen Soap\SoapClient übergeben.

Der Einsatz von Soap\Sdl empfiehlt sich immer dann, wenn eine WSDL-Datei wiederverwendet, gecacht oder zur Laufzeit analysiert werden soll, ohne den SOAP-Client jedes Mal neu initialisieren zu müssen.

Beispiele

WSDL-Datei laden und SDL-Objekt erzeugen

<?php
use Soap\Sdl;

// WSDL von einer URL laden
$sdl = Sdl::fromFile('https://example.com/service?wsdl');

// SDL-Objekt an einen neuen SoapClient übergeben
$client = new Soap\SoapClient($sdl);

// Nun können SOAP-Aufrufe durchgeführt werden
$result = $client->GetCustomer(['id' => 42]);
var_dump($result);

SDL aus einem WSDL-String erzeugen (z. B. aus dem Cache)

<?php
use Soap\Sdl;

// Gecachten WSDL-String aus einer Datei lesen
$wsdlContent = file_get_contents('/var/cache/my_service.wsdl');

// SDL-Objekt direkt aus dem String erstellen
$sdl = Sdl::fromString($wsdlContent);

// Vorhandene Operationen auflisten
foreach ($sdl->getOperations() as $operation) {
    echo $operation->getName() . PHP_EOL;
}

// Wichtig · Fallstricke

Hinweis zur Version: Die Soap\-Erweiterung und damit Soap\Sdl wurden mit PHP 8.4 als experimentelle API eingeführt. Die genaue API kann sich in zukünftigen Versionen noch ändern. Für produktive Systeme sollte die Stabilität der jeweiligen PHP-Version geprüft werden.

Sicherheit: Beim Laden von WSDL-Dateien aus externen Quellen können XXE-Angriffe (XML External Entity Injection) ein Risiko darstellen. Es empfiehlt sich, WSDL-Quellen zu validieren und den Zugriff auf externe Entitäten in der PHP-Konfiguration zu beschränken (libxml_disable_entity_loader(true) bei älteren PHP-Versionen).

Kompatibilität: Die neue Soap\Sdl-Klasse ist nicht kompatibel mit der klassischen SoapClient-Klasse aus dem ext/soap-Modul. Beide APIs können parallel existieren, sind jedoch nicht direkt austauschbar.