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