php-soap / wsdl-reader
PHP中的WSDL阅读器
0.17.0
2024-07-26 12:46 UTC
Requires
- php: ~8.1.0 || ~8.2.0 || ~8.3.0
- ext-dom: *
- azjezz/psl: ^2.4
- goetas-webservices/xsd-reader: ^0.4.6
- php-soap/engine: ^2.10.1
- php-soap/wsdl: ^1.4
- php-soap/xml: ^1.6.0
- symfony/console: ^5.4 || ^6.0 || ^7.0
- veewee/xml: ^3.0
- webmozart/assert: ^1.11
Requires (Dev)
- php-soap/engine-integration-tests: ^1.5.0
- php-standard-library/psalm-plugin: ^2.2
- phpunit/phpunit: ^10.1
- psalm/plugin-symfony: ^5.0
- symfony/var-dumper: ^6.1
- vimeo/psalm: ^5.6
README
此包提供读取WSDL文件并将其转换为将在php-soap包的其他部分使用的元数据的工具。
想要帮忙? 💚
想了解更多关于此项目未来的信息?查看我们将要工作的下一个大型项目列表。
安装
composer require php-soap/wsdl-reader
示例用法
use Soap\Engine\Metadata\Model\Method; use Soap\Engine\Metadata\Model\Type; use Soap\Wsdl\Loader\FlatteningLoader; use Soap\Wsdl\Loader\StreamWrapperLoader; use Soap\WsdlReader\Formatter\ShortMethodFormatter; use Soap\WsdlReader\Formatter\ShortTypeFormatter; use Soap\WsdlReader\Metadata\Wsdl1MetadataProvider; use Soap\WsdlReader\Wsdl1Reader; // Reading WSDL $loader = new FlatteningLoader(new StreamWrapperLoader()); $wsdl = (new Wsdl1Reader($loader))($wsdlLocation); // Parsing metadata $metadataProvider = new Wsdl1MetadataProvider($wsdl); $metadata = $metadataProvider->getMetadata(); // Processing collected info: var_dump($metadata->getMethods(), $metadata->getTypes());
如上所示,解析WSDL是分阶段进行的
这为您提供了在不同层次上的灵活性
- 您可以指定如何加载WSDL。
- 您可以使用此包中的WSDL类来运行自己的数据查找/操作。
- 您可以使用提供的元数据来运行自己的数据查找/操作。
- ...
阅读器
此包提供了一些可配置的WSDL阅读器。这为您在解析哪个版本的WSDL、使用哪个SOAP版本等方面提供了灵活性...
WSDL1和1.1
use Soap\WsdlReader\Locator\ServiceSelectionCriteria; use Soap\WsdlReader\Metadata\Wsdl1MetadataProvider; use Soap\WsdlReader\Model\Definitions\SoapVersion; use Soap\WsdlReader\Wsdl1Reader; $wsdl = (new Wsdl1Reader($loader))($wsdlLocation); $criteria = ServiceSelectionCriteria::defaults() ->withPreferredSoapVersion(SoapVersion::SOAP_12); $metadataProvider = new Wsdl1MetadataProvider($wsdl, $criteria);
WSDL1Reader接受一个ParserContext
。您无需配置它,因为它默认回退。但如果你想要配置像已知的XSD模式位置这样的东西,那就是你要去的地方!
一旦读取了WSDL1文件,它将尝试从你的WSDL文件中找到一个SOAP 1.2服务。此服务将被转换为人类可以理解的数据。
您可以应用额外的服务选择标准,这些标准将用于找到您偏好的SOAP服务。默认情况下,
- 选择标准允许任何SOAP服务。您可以禁用例如基于HTTP的SOAP服务。
- 没有偏好的SOAP版本。系统检测到的第一个SOAP服务将被选择。但您也可以指定特定的SOAP版本。
WSDL2
尚未实现!
控制台
此包扩展了由WSDL包提供的WSDL CLI工具。它提供了以下附加命令
$ ./vendor/bin/wsdl Available commands: inspect Inspects WSDL file. inspect:method Inspects a method of a WSDL file. inspect:type Inspects types from WSDL file.
列出所有内容
./vendor/bin/wsdl inspect your.wsdl
方法详细信息
./vendor/bin/wsdl inspect:method your.wsdl SomeMethodName
类型详细信息
./vendor/bin/wsdl inspect:type your.wsdl SomeType
自定义WSDL加载器
默认情况下,所有CLI工具都使用StreamWrapperLoader。所有CLI工具都有一个--loader=file.php
选项,可以用来应用自定义WSDL加载器。如果你的WSDL位于认证之后,或者你想要控制HTTP级别,这将非常有用。
示例自定义PHP加载器
<?php use Soap\Wsdl\Loader\FlatteningLoader; use Soap\Wsdl\Loader\StreamWrapperLoader; return new FlatteningLoader( StreamWrapperLoader( stream_context_create([ 'http' => [ 'method' => 'GET', 'header'=> sprintf('Authorization: Basic %s', base64_encode('username:password')), ], ]) ) );