Отключить собственный класс Soap в PHP5 и использовать nuSoap?

Я провел последнюю неделю, разрабатывая код для подключения к веб-службе с помощью библиотеки nuSoap. Я только что развернул код в рабочей среде, но сразу же начал получать ошибки, которых раньше не видел. Я проследил проблему до строки кода, которая пытается создать экземпляр нового объекта soapclient. Оказывается, обе библиотеки имеют класс с именем «soapclient», а тот, который создается в рабочей среде, — это родная библиотека Soap, а не библиотека nuSoap, которую я включаю. Как я могу отключить встроенную функциональность Soap и строго придерживаться nuSoap?


person Chris Bloom    schedule 10.03.2010    source источник


Ответы (3)


С выпуском PHP5 в расширение php_soap был включен класс soapclient. NuSOAP переименовал свой класс в nusoap_client. Если ваша копия NuSOAP актуальна, вы сможете ее использовать. Это не отключает расширение php_soap, но должно позволить вам использовать класс NuSOAP без дальнейших конфликтов.

person thetaiko    schedule 10.03.2010
comment
Упс, я недостаточно быстро перезагрузился, прежде чем опубликовать собственное решение. Спасибо за ответ! - person Chris Bloom; 10.03.2010

Ах, неважно. NuSoap 0.7.3 (который я использовал) специально изменил имя класса на nusoap_client, чтобы избежать этого конфликта. Они также включали проверку обратной совместимости, которая называла этот класс псевдонимом «soapclient», если родное расширение Soap не было загружено, поэтому я не уловил это на своей машине разработки.

Ссылка: http://code.google.com/p/nusoap-for-php5/issues/detail?id=2

person Chris Bloom    schedule 10.03.2010

Я не виню вас, встроенная библиотека мыла для PHP является полным и полным смущением, особенно по сравнению с веб-сервисами Python.

Один из вариантов — удалить расширение во время компиляции:

Это расширение доступно только в том случае, если PHP был настроен с параметром --enable-soap.

Другой вариант — переименовать soap-client в nuSoap. Поиск и замена Notepad++ работает хорошо, но вам не нужно этого делать.

person rook    schedule 10.03.2010
comment
Я не могу отключить расширение на рабочем сервере, так как это среда общего хостинга. - person Chris Bloom; 10.03.2010