Я пишу 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()
из моего класса, что не похоже на такую хорошую вещь.
Что я сделал не так? Подходит ли ковровая бомба «добавить все функции» только здесь?