Start · Sprachen · PHP · Referenz · xmlrpc_parse_method_descriptions

xmlrpc_parse_method_descriptions

Funktion

Dekodiert einen XML-String in eine Liste von Methodenbeschreibungen für XML-RPC-Dienste.

seit PHP 4.1.0 Kategorie: xml

Signatur

xmlrpc_parse_method_descriptions(string $xml): array

Beschreibung

xmlrpc_parse_method_descriptions() analysiert einen XML-String, der eine oder mehrere XML-RPC-Methodenbeschreibungen enthält, und gibt diese als strukturiertes PHP-Array zurück. Die Funktion wird typischerweise eingesetzt, um die Antwort eines XML-RPC-Servers auf eine system.describeMethods-Anfrage zu verarbeiten.

Das zurückgegebene Array enthält Informationen über die verfügbaren Methoden eines XML-RPC-Dienstes, einschließlich ihrer Parameter, Rückgabetypen und Beschreibungstexte. Dies ermöglicht es, eine Art Selbstdokumentation eines XML-RPC-Servers programmatisch auszuwerten.

Achtung: Diese Funktion ist experimentell und wird in der PHP-Dokumentation als solche gekennzeichnet. Das Verhalten und die Verfügbarkeit können sich zwischen PHP-Versionen ändern. Die gesamte xmlrpc-Erweiterung ist seit PHP 8.0 als veraltet markiert und wurde in PHP 8.4 entfernt. Für neue Projekte sollten alternative Bibliotheken wie phpxmlrpc/phpxmlrpc verwendet werden.

  • Geeignet zum Auslesen von Methoden-Metadaten eines XML-RPC-Servers.
  • Nützlich für die automatische Generierung von Client-Code oder Dokumentation.
  • Nicht für den produktiven Einsatz in neuen Projekten empfohlen.

Parameter

Name Typ Default Beschreibung
$xml Pflicht string Ein gültiger XML-String, der Methodenbeschreibungen im XML-RPC-Format enthält, typischerweise die Antwort auf eine system.describeMethods-Anfrage.

Rückgabewert

Typ
array
Beschreibung
Gibt ein assoziatives PHP-Array zurück, das die dekodierte Liste der Methodenbeschreibungen enthält. Im Fehlerfall oder bei ungültigem XML-Input kann ein leeres Array zurückgegeben werden.

Beispiele

Methodenbeschreibungen aus XML-String parsen

<?php
// Beispiel-XML mit einer Methodenbeschreibung im XML-RPC-Format
$xml = '<?xml version="1.0"?>
<methodList>
  <methodDescription name="system.echo">
    <purpose>Gibt den übergebenen Wert zurück.</purpose>
    <signatures>
      <signature>
        <value type="string">Rückgabewert</value>
        <value type="string">Eingabewert</value>
      </signature>
    </signatures>
  </methodDescription>
</methodList>';

$beschreibungen = xmlrpc_parse_method_descriptions($xml);
print_r($beschreibungen);

Methodenliste eines XML-RPC-Servers auslesen

<?php
// XML-RPC-Anfrage an einen Server senden und Antwort parsen
$anfrage = xmlrpc_encode_request('system.describeMethods', []);

$kontext = stream_context_create([
    'http' => [
        'method'  => 'POST',
        'header'  => 'Content-Type: text/xml',
        'content' => $anfrage,
    ],
]);

$antwort = file_get_contents('http://beispiel-server.de/rpc', false, $kontext);

if ($antwort !== false) {
    $methoden = xmlrpc_parse_method_descriptions($antwort);
    foreach ($methoden as $name => $info) {
        echo "Methode: " . htmlspecialchars($name) . "\n";
        if (isset($info['purpose'])) {
            echo "  Zweck: " . htmlspecialchars($info['purpose']) . "\n";
        }
    }
} else {
    echo "Fehler beim Abrufen der Methodenbeschreibungen.\n";
}

// Wichtig · Fallstricke

Deprecation-Hinweis: Die gesamte xmlrpc-Erweiterung (einschließlich xmlrpc_parse_method_descriptions()) wurde in PHP 8.0 als veraltet (deprecated) markiert und ist seit PHP 8.4 nicht mehr verfügbar. Bestehender Code sollte auf eine aktiv gepflegte Bibliothek wie phpxmlrpc/phpxmlrpc migriert werden.

Da die Funktion experimentell ist, ist das genaue Format des zurückgegebenen Arrays nicht zuverlässig dokumentiert und kann sich zwischen PHP-Versionen unterscheiden. Eingaben aus nicht vertrauenswürdigen Quellen sollten vor der Verarbeitung validiert werden, um XXE-Angriffe (XML External Entity Injection) zu vermeiden.