我正在编写一个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();
Run Code Online (Sandbox Code Playgroud)
在本地测试(在PHP 5.3上)工作正常,我能够发送请求和接收响应.
当我把它放到我的开发服务器(PHP 5.2.9)上时,我收到以下错误消息:
SoapServer::addFunction(): Tried to add a non existant function 'getPrice'
除了他们不能拼写的事实,这是非常令人困惑的.
我已经设法通过将addFunction()
行更改为此来解决此问题:
$server->addFunction(SOAP_FUNCTIONS_ALL);
Run Code Online (Sandbox Code Playgroud)
......它工作正常!当然,检查$server->getFunctions()
表明这也增加了我的课程__construct()
和__wakeup()
功能,这似乎不是一件好事.
我做错了什么?地毯炸弹"添加所有功能"的方法是这里唯一的方法吗?