我在写一个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