Mittwoch, 23.12.2009 | PHP | Keine Kommentare | php , wsdl , soap , webservices , zend framework
<?php
// soap-server.php
$zendPath = '...';
set_include_path(get_include_path().PATH_SEPARATOR.$zendPath);
require 'Zend/Loader/Autoloader.php';
$autoloader = Zend_Loader_Autoloader::getInstance();
class MeinWebservice {
/**
* Gibt den Wert mal 10 zurück
*
* @param int $inputParam
* @return int
*/
public function test1($inputParam) {
return $inputParam * 10;
}
/**
* Addiert die Werte
*
* @param int $inputParam1
* @param int $inputParam2
* @return int
*/
public function test2($inputParam1, $inputParam2) {
return $inputParam1 + $inputParam2;
}
}
?>
Unsere Klasse "MeinWebservice" stellt also die zwei Funktionen test1 und test2 bereit. Damit diese Funktionen aufgerufen werden können, erstellen wir jetzt unseren SOAP Server.
<?php
// soap-server.php
$wsdl = 'http://localhost/soap/soap-server.php?wsdl=1';
if($_GET['wsdl'] == 1) {
$autodiscover = new Zend_Soap_AutoDiscover();
$autodiscover->setClass('MeinWebservice');
$autodiscover->handle();
} else {
$server = new Zend_Soap_Server($wsdl);
$server->setClass('MeinWebservice');
$server->handle();
}
?>
Mit $server->setClass() übergeben wir dem Zend_Soap_Server Objekt unsere Klasse. Um die WSDL automatisch aus unserer Klasse zu generieren verwenden wir Zend_Soap_AutoDiscover. Die WSDL wird aber nur erzeugt wenn der $_GET Parameter 'wsdl' auf 1 gesetzt wird. (Damit die WSDL richtig generiert wird muss der Docblock korrekt sein.) Ist 'wsdl' ungleich 1 übernimmt Zend_Soap_Server die verarbeitung.
Um unseren Server zu testen erstellen wir uns einen Soap-Client und rufen unsere Funktionen auf.
<?php
// soap-client.php
$zendPath = '...';
set_include_path(get_include_path().PATH_SEPARATOR.$zendPath);
require 'Zend/Loader/Autoloader.php';
$autoloader = Zend_Loader_Autoloader::getInstance();
$client = new Zend_Soap_Client("http://localhost/soap/soap-server.php?wsdl=1");
$result = $client->test1(10);
var_dump($result);
$result = $client->test2(50, 35);
var_dump($result);
?>
Weitere Informationen zu SOAP gibt es bei Wikipedia und im Zend Framework Refernce Guide.