我在寫一個SOAP服務器並遇到了一個奇怪的問題。PHP中的SOAP服務器錯誤 - 添加類中的函數
下面是來自server.php
class MyHandler {
public function __construct() { ... }
public function __wakeup() { ... }
public function getPrice() { ... }
}
$server = new SoapServer("my.wsdl", array("soap_version" => SOAP_1_2));
$server->setClass('MyHandler');
$server->addFunction("getPrice");
$server->handle();
測試這個本地(在PHP 5.3)相關線路工作正常,我可以發送請求和接收響應。
當我把這個在我的開發服務器(PHP 5.2.9),我得到這個錯誤信息:
SoapServer::addFunction(): Tried to add a non existant function 'getPrice'
除了一個事實,即他們不能拼,這非常混亂。
我一直以來設法改變addFunction()
線,這對解決此問題:
$server->addFunction(SOAP_FUNCTIONS_ALL);
...它工作正常!當然,檢查$server->getFunctions()
表明,這也增加了我的課程中的__construct()
和__wakeup()
函數,這似乎並不是一件好事。
我做錯了什麼?地毯炸彈是「添加所有功能」的方法嗎?
不,我確定沒有包含額外的函數:腳本中只包含一個include(包括MyHandler類),甚至包含的內容都粘貼到腳本中,沒有區別。 – nickf 2010-02-10 06:54:05
您是否嘗試刪除addFunction()調用?無論如何,setClass()應該足以導出類中的所有方法。 – Owen 2010-02-10 07:01:31