我試圖在Symfony 2框架中使用SOAP實現WebService。在服務器端im設置類到我的服務器(setClass()方法)因爲我需要在類的一個實例上做更多的操作。 如果我用的setObject爲soapCalls,它的工作好,Symfony 2項目中的SOAP服務器
use path\to\Test;
public function indexAction()
{
$server = new \SoapServer(null, array('uri' => "http://test-uri.cz/"));
$server->setObject($this->get('my_service'));
$response = new Response();
$response->headers->set('Content-Type', 'text/xml');
ob_start();
$server->handle();
if (ob_get_length() > 0) {
$response->setContent(ob_get_clean());
}
return $response;
}
但setClass方法不`噸的工作。
use path\to\Test;
public function indexAction()
{
$server = new \SoapServer(null, array('uri' => "http://test-uri.cz/"));
$server->setClass('Test');
$response = new Response();
$response->headers->set('Content-Type', 'text/xml');
ob_start();
$server->handle();
if (ob_get_length() > 0) {
$response->setContent(ob_get_clean());
}
return $response;
}
有人能給我任何提示嗎?
我也使用setObject。你的服務是一個類的實例,所以一個對象...我想我們可以使用setClass,如果你的SOAP管理器沒有任何複雜的依賴關係,如服務可能有... – AlterPHP 2013-03-27 13:29:14
但是setObject創建類的新實例,當你調用__soapCall方法。而且我在一些簡單的類上測試了setClass,它沒有依賴性,並且包含一些簡單的方法。所以複雜的課堂不會有問題。 – gavec 2013-03-27 13:36:58
我認爲它不會創建新的實例,但使用現有的實例(一個現有的對象)! setClass確實創建了一個新的實例。 – AlterPHP 2013-03-27 13:38:56