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.