Как создать вспомогательные классы и код заглушки с помощью wsdl2php для веб-службы PHP? - PullRequest
0 голосов
/ 12 августа 2010

У меня есть WSDL, сгенерированный WCF, и теперь этот WSDL должен использоваться для создания веб-службы PHP.Мой WSDL содержит сопоставления с пользовательскими классами .NET (complexType), и мне понадобится инструмент PHP WSDL, который может генерировать эквивалентные классы PHP, а также код заглушки (генерация на стороне сервера).

Я читал, чтоwsdl2php был бы правильным инструментом для выполнения этой работы, поэтому я попробовал его по адресу: (http://labs.wso2.org/wsf/php/wsdl2phptool.php)

Он работал частично, создавая код заглушки, но не создавал вспомогательные классы (функцияпараметры кажутся типа anyType, и для каждой функции генерируется только один параметр.) У меня также есть версия скрипта, которую я могу запустить с помощью команды следующего типа в Windows:

php wsdl2php.php -s http://My.Server.com/MyWCFService/MyWCFService.svc?wsdl> MyWebService.php

, но по какой-то причине он не работает, поскольку выводит пустой файл. Я не эксперт по PHP, так как я являюсь разработчиком .NET, но я бынужно проверить, как работает наш WSDL с веб-сервисами PHP (просто чтобы увидеть, что можно генерировать код PHP из нашего WSDL так же, как в .NET).

Буду признателен, если выВы можете привести простой пример создания вспомогательных классов и кода заглушки для веб-службы PHP.

Спасибо!:)

Ответы [ 2 ]

0 голосов
/ 14 декабря 2010

Вы также можете использовать шаблоны T4 для генерации классов ServiceProxies и DataContract из вашей реализации Service. Я разрабатывал их для моего проекта, они выпущены на GitHub, включая образцы:

https://github.com/schaermu/wcf-phpclient-t4

На всякий случай, если вам нужна логика генерации прокси в вашем .NET-решении.

0 голосов
/ 17 августа 2010

Нашли решение! Чтобы создать вспомогательные классы в дополнение к заглушке с помощью wsdl2php, вам понадобится один файл WSDL. Текущая версия (2.1.0) wsdl2php имеет трудности с пониманием WSDL, созданного WCF. Это происходит из-за тегов импорта, используемых в WSFL WCF (схемы были импортированы в документ wsdl, а wsdl2php это не нравится)

После того, как я создал один WSFL WCF с использованием WCFExtras, мне также удалось создать вспомогательные классы!

"http://wcfextras.codeplex.com/"

"http://weblogs.asp.net/pglavich/archive/2010/03/16/making-wcf-output-a-single-wsdl-file-for-interop-purposes.aspx" (сначала прочтите это, так как важно правильно указать пространства имен, иначе у вас возникнут проблемы с WCFExtras)

...