dhcmediway / wsdl2phpgenerator
一个用于从wsdl文件生成PHP类的简单类库。
Requires
- php: >=7.1
- symfony/options-resolver: ~2.6|~3.0|~5.0
- symfony/polyfill-iconv: ^1.2
- dev-master
- 3.5.10
- 3.5.9
- 3.5.8
- 3.5.7
- 3.5.6
- 3.5.5
- 3.5.4
- 3.5.3
- 3.5.2
- 3.5.1
- 3.5.0
- 3.4.9
- 3.4.8
- 3.4.7
- 3.4.6
- 3.4.5
- 3.4.3
- 3.4.2
- 3.4.1
- 3.4.0
- 3.3.1
- 3.3.0
- 3.2.1
- 3.2.0
- 3.1.2
- 3.1.1
- 3.1.0
- 3.0.1
- 3.0.0
- 2.5.5
- 2.5.4
- 2.5.3
- 2.5.2
- 2.5.1
- 2.5.0
- 2.4.2
- 2.4.1
- 2.4.0
- 2.3.0
- 2.2.2
- 2.2.1
- 2.2.0
- 2.1.0
- 2.0.3
- 2.0.2
- 2.0.1
- 2.0.0
- dev-update-scrutinizer-config
This package is auto-updated.
Last update: 2024-09-28 05:43:44 UTC
README
将wsdl2phpgenerator添加到您的Composer项目中
composer require dhcmediway/wsdl2phpgenerator
该项目也将作为一个命令行应用程序提供,可以作为phar文件下载。
用法
要生成类,创建一个Generator
实例,并将一个Config
实例传递给它。
$generator = new \Wsdl2PhpGenerator\Generator(); $generator->generate( new \Wsdl2PhpGenerator\Config(array( 'inputFile' => 'input.wsdl', 'outputDir' => '/tmp/output' )) );
在生成代码后,根据需要配置现有的自动加载器。生成的代码还包含一个简单的autoload.php
文件,可以直接包含。这将注册一个用于生成类的简单自动加载器。
示例用法
以下示例将在单个过程中生成代码,加载生成的类,调用Web服务,并返回结果。
$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();
请注意,这不推荐使用。通常代码生成和Web服务调用将是两个独立的过程。
选项
生成器支持一系列可以在配置中设置的选项。
inputFile
要生成类的wsdl的路径或URL。
outputDir
放置生成的类的目录。如果不存在,则将其创建。
namespaceName
用于生成类的命名空间。如果未设置,则生成的类将不带命名空间。
示例用法
以下配置将把来自CDYNE Weather Web服务的代码放置在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 Web服务生成AmazonEC2
和CopyImageType
类。
$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
要生成的服务操作的逗号分隔列表或数组。这将仅生成所需操作的类型。生成的服务类将仅包含所选操作。
示例用法
以下配置将为ReplaceRouteTableAssociation
和RequestSpotInstances
操作生成操作和类型。
$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客户端更多。
支持以下格式
- 一个包含以下键的数组
host
、port
、login
和password
,匹配 PHPSoapClient
支持的代理选项 ([https://php.ac.cn/manual/en/soapclient.soapclient.php]) - 一个类似 URL 的字符串格式
代理信息在访问 WSDL 生成代码以及后续对 SOAP 服务的请求时使用。
示例用法
以下配置将使用代理访问 Google DoubleClick 广告交易平台买家 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
- 生成代码
对这些的向后不兼容更改意味着主版本号将增加。附加功能和错误修复增加次要和补丁版本。