Jak handlovat SOAP vyjímky? Po změně exception handlerů v Nette?
- mcmatak
- Člen | 504
Mám SoapServer, navazuji na toto téma
https://forum.nette.org/…-soap-server
tento presenter, není nijak začleněn zend_server narozdíl od předchozího tématu, jak z nette odeslat klientovi vyjímku?
<?php
final class DefaultPresenter extends BasePresenter
{
public function actionDefault()
{
if (isset($_GET['wsdl'])) {
$autodiscover = new \Zend_Soap_AutoDiscover();
$autodiscover->setClass("ServicesModule_DefaultModel");
$autodiscover->handle();
}
else {
$server = new \SoapServer('http://' .$_SERVER['HTTP_HOST'] . $_SERVER['REQUEST_URI'] . "?wsdl");
$server->setObject(new \ServicesModule_DefaultModel($this->context));
$server->handle();
}
}
}
?>
jak by mělo probíhat odeslání vyjímky??
- Tomulin
- Člen | 1
Taky jsem zaznamenal jisté potíže se Zend_Soap_Server. Jednak to bylo způsobeno aktualiuzací Zend knihoven, kdy se ukázal jako problémový přechod z verze 1.11.12 na novější a jednak samotným způsobem vyhazování výjimek, který je nativním PHP Soapu dosti prdelní.
Vyřešil jsem to tak, že jsem si rozšířil Zend_Soap_Server o metodu která vrací nativní SOAP server a taktéž metodu fault() pro vyhazování vyjímek.
Pro ty, kteří počítají s nějakou širší implementací SOAPu v PHP, rozhlédněte se raději po nějaké jiné knihovně. Ušetříte se spoustu problémů s kompatibilitou a implementací.