Datentausch per Webservice

Teil 2: Webservices mit PHP selbst gemacht

Die meisten PHP-Bibliotheken zur Implementierung von SOAP-Webservices erlauben auch eine automatische Generierung der dazugehörigen WSDL-Files. In einem späteren Listing werden wir hierzu noch ein Beispiel sehen.

Schritt für Schritt

Zuerst wollen wir uns ansehen, wie eine PHP-Funktion als SOAP-Service veröffentlicht und dadurch von anderen Systemen verwendet werden kann. Die folgenden Listings zeigen eine Beispielimplementierung mit den SOAP-Klassen des Zend Frameworks (Open Source).

Dazu ist es selbstverständlich notwendig, die entsprechenden Klassen des Frameworks zu installieren. Alle notwendigen Dateien bekommen Sie unter . Das erste Listing zeigt die Klasse deren Methode wir per SOAP-Webservice erreichbar machen wollen.

<?php
class HelloWorldService {
/**
* Say Hello
*
* @param string $who
* @return string
*/
function sayHello($who) {
return 'Hallo '.$who;
}
}
?>

An dieser Implementierung ist nichts Besonderes oder gar Webservice-Spezifisches. Das Einzige was Sie beachten müssen, um eine Methode einer Klasse per Webservice zu veröffentlichen, ist die Beschreibung der Schnittstelle per Doc-Block-Kommentar.

Wichtig ist hier vor allem das Festlegen der Datentypen der jeweiligen Übergabe- und Rückgabeparameter. Die Veröffentlichung der Methode geschieht im Falle von Zend-Framework über die Klasse Zend_Soap_Server.

<?php
require_once "HelloWorldService.php";
require_once "Zend/Soap/Server.php";
$soap = new Zend_Soap_Server
(null, $options);
$soap->setClass('HelloWorldService');
$soap->handle();
?>

Damit steht der Server zur Verfügung und kann auch bereits eingesetzt werden, allerdings fehlt uns noch die dazu passende WSDL-Beschreibungsdatei, um einen passenden Client zu schreiben.

Die WSDL-Beschreibung können Sie jetzt manuell zusammenschreiben, was natürlich sehr aufwendig wäre. Wie versprochen wollen wir uns ansehen, wie die WSDL-Definition einer Webservice-Methode automatisch erzeugt werden kann. Auch hierzu bietet das Zend-Framework das notwendige Rüstzeug.

require_once "HelloWorldService.php";
require_once "Zend/Soap/Server.php";
require_once "Zend/Soap/
AutoDiscover.php";
$autodiscover = new Zend_Soap_
AutoDiscover();
$autodiscover->setClass
('HelloWorldService');
$autodiscover->handle();

Der Aufruf dieses Skriptes erzeugt die WSDL-Datei, die notwendig ist, um von einem beliebigen Client auf den Service zuzugreifen. Das Ausführen der handle-Methode erzeugt bei jedem Aufrufes des Skriptes das WSDL-File.

Die erneute Erzeugung der WSDL-Definition bei jedem Aufruf macht selbstverständlich nur wenig Sinn. Die Signatur einer Service-Methode ändert sich nur selten, daher kann die WSDL-Datei normalerweise unverändert übernommen werden.

Dazu empfiehlt es sich das Ergebnis in einem Cache zwischenzuspeichern, sodass die Definition nicht jedes Mal aufs Neue erstellt werden muss.

Mehr zum Thema

Youtube Sperre umgehen GEMA
Videos freischalten

So umgehen Sie die GEMA-Sperre bei Youtube. Was Sie dazu brauchen, und wie es am einfachsten geht.
Neue Fritzboxen unterstützen den AC-Standard.
WLAN-Geschwindigkeit verdoppeln

Mehr WLAN-Geschwindigkeit: Mit dem WLAN-Standard 802.11ac und den richtigen Geräten und Einstellungen verdoppeln Sie den Datendurchsatz.
Netflix auf dem TV
Programm in der Übersicht

Welche Filme und Serien gibt es bei Netflix eigentlich zu sehen? Was ist neu im Streaming-Angebot? Diese Antworten helfen weiter.
Netflix
Streaming

Preise, kompatible Geräte, Datenrate, Serien- und Filmangebot von Netflix: Wir beantworten die wichtigsten Fragen rund um den Streaming-Dienst.
E.T. – Der Außerirdische
Vorschau auf Film- und Serien-Highlights

Amazon Prime Instant Video lockt im Dezember 2016 mit Film-Highlights wie "E.T.", "Fast & Furious 7" und der Serie "Ku’damm 56​".