Я провел последнюю неделю, разрабатывая код для подключения к веб-службе с помощью библиотеки nuSoap. Я только что развернул код в рабочей среде, но сразу же начал получать ошибки, которых раньше не видел. Я проследил проблему до строки кода, которая пытается создать экземпляр нового объекта soapclient. Оказывается, обе библиотеки имеют класс с именем «soapclient», а тот, который создается в рабочей среде, — это родная библиотека Soap, а не библиотека nuSoap, которую я включаю. Как я могу отключить встроенную функциональность Soap и строго придерживаться nuSoap?
Отключить собственный класс Soap в PHP5 и использовать nuSoap?
Ответы (3)
С выпуском PHP5 в расширение php_soap был включен класс soapclient
. NuSOAP переименовал свой класс в nusoap_client
. Если ваша копия NuSOAP актуальна, вы сможете ее использовать. Это не отключает расширение php_soap, но должно позволить вам использовать класс NuSOAP без дальнейших конфликтов.
Ах, неважно. NuSoap 0.7.3 (который я использовал) специально изменил имя класса на nusoap_client, чтобы избежать этого конфликта. Они также включали проверку обратной совместимости, которая называла этот класс псевдонимом «soapclient», если родное расширение Soap не было загружено, поэтому я не уловил это на своей машине разработки.
Ссылка: http://code.google.com/p/nusoap-for-php5/issues/detail?id=2
Я не виню вас, встроенная библиотека мыла для PHP является полным и полным смущением, особенно по сравнению с веб-сервисами Python.
Один из вариантов — удалить расширение во время компиляции:
Это расширение доступно только в том случае, если PHP был настроен с параметром --enable-soap.
Другой вариант — переименовать soap-client в nuSoap. Поиск и замена Notepad++ работает хорошо, но вам не нужно этого делать.