Как сгенерировать PHP-код мыльного клиента? - PullRequest
8 голосов
/ 01 ноября 2009

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

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

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

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

Ответы [ 6 ]

11 голосов
/ 08 апреля 2014

Я нашел генератор действительно полезным

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
9 голосов
/ 01 ноября 2009

Вместо этого вы можете использовать метод [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';
8 голосов
/ 09 июля 2010

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

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

Запустите его для файла WSDL, и он создаст классы на основе служб WSDL.

4 голосов
/ 02 ноября 2009

Просто чтобы помочь кому-то еще, кто сталкивается с этим постом и думает: "Как, черт возьми, я работаю с этим 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-файлы, расположенные в каталоге pear под SOAP.

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

0 голосов
/ 13 ноября 2014

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

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

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

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

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

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

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

Недостатки:

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

Я использовал 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.

...