thn/wsdl2phpgenerator

此包已废弃,不再维护。未建议替代包。

用于从wsdl文件生成php类的简单类库。

3.3.1 2016-01-13 13:00 UTC

README

Latest Stable Version Build Status Code Coverage Scrutinizer Quality Score Dependency Status

简单的WSDL到PHP类转换器。接受WSDL文件并输出可使用的类文件。

使用MIT许可协议

公告:我们正在寻找一两个具有提交权限的协维护者来帮助推进此项目,审查pull请求并响应问题。如果您为此项目做出过贡献或积极参与开源,并拥有GitHub个人资料供审查,请ping @kasperg 表达您的兴趣。

新主要版本:3.0

wsdl2phpgenerator的3.0新主要版本最近已发布。

这引入了对配置和生成代码的更改。这些更改使其更灵活,更容易包含在其他项目中,促进贡献并减少维护。

鼓励2.x用户阅读3.0中的新功能概述

贡献者

最初由 @walle 开发,并包含了来自 @vakopian@statikbe@ecolinet@nuth@chriskl@RSully@jrbasso@dypa@Lafriks@SamMousa@xstefanox@garex@honzap@jk@sheeep@colinodell@red-led@ivol84@wasinger@devlead@NoUseFreak@HighOnMikey@theHarvester@fduch@methodin@nkm@jongotlin@yethee@rindeal@vtsao@xoeoro@lunetics@peter-vanpoucke@jabiinfante@renatomefi@kasperg 等的贡献。

欢迎提交 pull request。请阅读 我们关于贡献的指南

邮件列表

该项目有一个邮件列表,地址为 https://groups.google.com/forum/#!forum/wsdl2phpgenerator

安装

将 wsdl2phpgenerator 添加到您的 Composer 项目中

composer require wsdl2phpgenerator/wsdl2phpgenerator

该项目还将作为 命令行应用程序 提供,可以下载为 phar 文件。

使用方法

要生成类,请创建一个 Generator 实例并将其传递一个 Config 实例。

$generator = new \Wsdl2PhpGenerator\Generator();
$generator->generate(
	new \Wsdl2PhpGenerator\Config(array(
        'inputFile' => 'input.wsdl',
        'outputDir' => '/tmp/output'
    ))
);

代码生成后,请根据需要配置现有的自动加载器。生成的代码还附带了一个简单的 autoload.php 文件,可以直接包含。这将注册一个用于生成的类的简单自动加载器。

示例用法

以下示例将在一个过程中从网络服务生成代码,加载生成的类,调用网络服务并返回结果。

$generator = new \Wsdl2PhpGenerator\Generator();
$generator->generate(
	new \Wsdl2PhpGenerator\Config(array(
        'inputFile' => 'http://www.webservicex.net/CurrencyConvertor.asmx?WSDL',
        'outputDir' => '/tmp/CurrencyConverter'
    ))
);

require '/tmp/CurrencyConverter/autoload.php';

// A class will generated representing the service.
// It is named after the element in the WSDL and has a method for each operation.
$service = new \CurrencyConvertor();
$request = new \ConversionRate(\Currency::USD, \Currency::EUR);
$response = $service->ConversionRate($request);

echo $response->getConversionRateResult();

请注意,这种用法不建议。通常代码生成和网络服务调用将是两个独立的过程。

选项

生成器支持一系列选项,可以在配置中设置。

inputFile

生成类的 WSDL 的路径或 URL。

outputDir

放置生成的类的目录。如果不存在,将会创建。

namespaceName

用于生成类的 命名空间。如果未设置,则类将不带命名空间生成。

示例用法

以下配置将 CDYNE 天气网络服务生成的代码放置在 CDyne\Weather 命名空间下。

$generator = new \Wsdl2PhpGenerator\Generator();
$generator->generate(
    new \Wsdl2PhpGenerator\Config(array(
        'inputFile' => 'http://wsf.cdyne.com/WeatherWS/Weather.asmx?wsdl',
        'outputDir' => '/tmp/weather',
        'namespaceName' => 'CDyne\Weather'
    ))
);

classNames

要生成的类名的逗号分隔列表或数组。WSDL 中其他所有类都将被忽略。

此选项已弃用,将在 4.0.0 中删除。请改用 operationNames

示例用法

以下配置将仅从 Amazon EC2 网络服务生成 AmazonEC2CopyImageType 类。

$generator = new \Wsdl2PhpGenerator\Generator();
$generator->generate(
    new \Wsdl2PhpGenerator\Config(array(
        'inputFile' => 'https://s3.amazonaws.com/ec2-downloads/2013-10-01.ec2.wsdl',
        'outputDir' => '/tmp/amazon',
        'classNames' => 'AmazonEC2, CopyImageType'
    ))
);

operationNames

要生成的服务操作的逗号分隔列表或数组。这将仅生成所选操作所需的数据类型。生成服务类将仅包含所选操作。

示例用法

以下配置将为 ReplaceRouteTableAssociationRequestSpotInstances 操作生成操作和类型。

$generator = new \Wsdl2PhpGenerator\Generator();
$generator->generate(
    new \Wsdl2PhpGenerator\Config(array(
        'inputFile' => 'https://s3.amazonaws.com/ec2-downloads/2013-10-01.ec2.wsdl',
        'outputDir' => '/tmp/amazon',
        'operationNames' => 'ReplaceRouteTableAssociation, RequestSpotInstances'
    ))
);

sharedTypes

如果启用,这将使具有相同标识符的所有类型使用相同的类,并且只生成一次。默认解决方案是在名称前添加编号以避免名称冲突。

constructorParamsDefaultToNull

如果启用,这将设置所有构造函数中所有参数的默认值为 null。如果使用此选项,则必须使用访问器设置属性。

proxy

指定用于访问 WSDL 和其他外部资源的代理。此选项应代替 PHP SoapClient 支持的代理选项(https://php.ac.cn/manual/en/soapclient.soapclient.php),因为 wsdl2phpgenerator 使用了比 SOAP 客户端更多的信息提取。

支持以下格式:

  • 一个包含以下键的数组:hostportloginpassword,与PHP SoapClient支持的代理选项相匹配[参阅PHP SoapClient文档](https://php.ac.cn/manual/en/soapclient.soapclient.php "https://php.ac.cn/manual/en/soapclient.soapclient.php")
  • 类似URL的字符串格式

代理信息用于访问WSDL以生成代码,以及后续对SOAP服务的请求。

示例用法

以下配置将使用代理访问Google DoubleClick Ad Exchange Buyer SOAP API

$generator = new \Wsdl2PhpGenerator\Generator();
$generator->generate(
    new \Wsdl2PhpGenerator\Config(array(
        'inputFile' => 'https://ads.google.com/apis/ads/publisher/v201306/ActivityService?wsdl',
        'outputDir' => '/tmp/amazon',
        'proxy' => 'tcp://user:secret@192.168.0.1:8080'
    ))
);

soapClientClass

用于生成服务的基类。这应该是一个PHP SoapClient的子类。

可以使用的一些第三方SOAP客户端实现示例

请注意,确保在代码生成和调用Web服务时基类可用是周围代码的责任。

示例用法

以下配置将使用BeSimple SOAP客户端作为基类

$generator = new \Wsdl2PhpGenerator\Generator();
$generator->generate(
    new \Wsdl2PhpGenerator\Config(array(
        'inputFile' => 'input.wsdl',
        'outputDir' => '/tmp/output',
        'soapClientClass' => '\BeSimple\SoapClient\SoapClient'
    ))
);

soapClientOptions

传递给SoapClient的配置选项数组。它们将在访问WSDL以生成代码时使用,并作为后续对SOAP服务的请求的默认值。PHP文档有支持的选项列表

可以通过使用更高级的SoapClient实现来扩展客户端的选项列表。

请注意,wsdl2phpgenerator期望features选项包含SOAP_SINGLE_ELEMENT_ARRAYS。这确保了即使序列仅包含一个元素,类型提示也是一致的。如果显式在soapClientOptions中设置features选项,则必须显式添加SOAP_SINGLE_ELEMENT_ARRAYS

示例用法

以下配置将启用基本身份验证,并将连接超时设置为60秒。

$generator = new \Wsdl2PhpGenerator\Generator();
$generator->generate(
    new \Wsdl2PhpGenerator\Config(array(
        'inputFile' => 'input.wsdl',
        'outputDir' => '/tmp/output',
        'soapClientOptions' => array(
        	'authentication' => SOAP_AUTHENTICATION_BASIC,
        	'login' => 'username',
        	'password' => 'secret',
        	'connection_timeout' => 60
    ))
));

版本控制

此项目旨在使用语义版本控制。以下构成公共API

  • \Wsdl2PhpGenerator\GeneratorInterface
  • \Wsdl2PhpGenerator\ConfigInterface
  • 生成的代码

对这些的向后不兼容更改意味着将增加主要版本。新增功能和错误修复增加次要和修补程序版本。