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

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

С выпуском PHP5 существует класс soapclient включенный в расширение php_soap. 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

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

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

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

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