Как сгенерировать код клиента с мылом PHP?

Есть ли способ генерировать PHP Soap Client из WSDL-файла?

Я имею в виду что-то вроде wsdl.exe или svcutil.exe в .net, которое генерирует код для класса, который может быть клиентом службы, а не что-то вроде:

 $WSDL = new SOAP_WSDL($wsdl_url); $client = $WSDL->getProxy(); 

Моя проблема в том, что я хочу, чтобы клиент PHP мог работать с сервисом, даже если эта служба не раскрывает его WSDL.

Вы можете использовать метод [ generateProxyCode ], указанный в пакете SOAP_WSDL ( http://pear.php.net/reference/SOAP-0.9.4/SOAP/SOAP_WSDL.html#methodgenerateProxyCode ), и сохранить его в файл:

 $WSDL = new SOAP_WSDL($wsdl_url); $php = $WSDL->generateProxyCode(); file_put_contents('wsdl_proxy.php', '<?php ' . $php . ' ?>'); require 'wsdl_proxy.php'; 

Для этого есть приложение, оно называется wsdl2phpgenerator:

http://code.google.com/p/wsdl2phpgenerator/

Запустите его против WSDL-файла, и он будет генерировать классы на основе WSDL-сервисов.

Я нашел генератора очень полезным

https://github.com/wsdl2phpgenerator/wsdl2phpgenerator

Инструкции (из github):

  • Загрузите wsdl2phpgenerator-2.3.0.phar из последней версии
  • Запустите «php wsdl2phpgenerator-2.3.0.phar -i input.wsdl -o tmp / my / directory / wsdl"

Работа для веб-хостинга wsdl тоже

например

 php wsdl2phpgenerator-2.3.0.phar -i http://someurl/input.wsdl -o tmp/my/directory/wsdl 

Просто чтобы помочь кому-то еще, кто попадает на этот пост, и думает: «Как, черт возьми, я работаю с этой SOAP_WSDL?» (как и я)

Откройте командную строку и перейдите в свой php-каталог (я установил XAMPP Lite в этом примере)

Однажды в директории php я запустил скрипт pear.bat. После этого я смог ввести следующее через строку cmd

pear -V (предоставляет версию вашей установки)

список груши

Если вы наберете выше и не видите SOAP, вам нужно сделать следующее из строки cmd:

  • груша установить Net_DIME-1.0.1

  • груша установить Mail_Mime-1.5.2

  • груша установить Mail-1.2.0b1

  • груша установить SOAP-0.12.0

Теперь, после установки этих пакетов и создания другого «списка груши», вы должны увидеть список SOAP.

Если это так, вы можете включить ссылку на файлы php, выгруженные внутри каталога груши в SOAP.

Одним из примеров этого пути может быть C: \ xampplite \ php \ PEAR \ SOAP

Я использовал wsdl2php , простой инструмент PEAR; кажется, что проект мертв, но вы можете скачать последнюю версию здесь: http://sourceforge.net/projects/wsdl2php/

Для этого требуется машина разработки с PHP 5 и PEAR, и вам нужно установить ее с помощью этой команды PEAR:

 sudo pear install wsdl2php-0.2.1-pear.tgz 

После этого вы можете сгенерировать файл классов PHP с помощью этой команды:

 wsdl2php <WSDL_URL> 

Он генерирует основной класс, который расширяет SoapClient и многие другие классы, которые представляют запросы, ответы и сложные объекты, поэтому он очень полезен при разработке в среде IDE с помощью «intellisense», например NetBeans.

Я пытался использовать все, что было перечислено здесь.

Нашел другой вариант: https://github.com/mikaelcom/WsdlToPhp

Плюсы в сравнении с предыдущими:

  • Никаких зависимостей. Как для генератора, так и для созданного клиента.

  • Классы для параметров ввода и вывода .

  • Примеры использования для созданного клиента . Это не так важно. Но несколько раз очень полезно

  • Меньше кода (по сравнению с SOAP_WSDL)

Недостатки:

  • Ответ и любой сложный подтип переносятся на другой объект, содержащий техническую информацию.