我正在编写 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()
and __wakeup()
我的班级也有这些功能,这似乎不是一件好事。
我做错了什么?地毯式炸弹“添加所有功能”是唯一的方法吗?
Using addFunction()
告诉它寻找一个名为的函数getPrice()
独立于课堂之外。这个不存在,所以导致了错误。
Using addClass()
将自动添加所有功能MyHandler
,所以你不需要打电话addFunction()
, getPrice()
应该已经添加了。
此外,bugs.php.net 上有一个开放票证(针对 PHP 5.2.9),这似乎表明无法使用以下命令添加类方法addFunction()
: http://bugs.php.net/bug.php?id=47919 http://bugs.php.net/bug.php?id=47919
但我无法访问 PHP 5.3,所以恐怕不确定事情会如何改变......
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)