Signatur
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
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.