php-soap/wsdl-reader

PHP中的WSDL阅读器

0.17.0 2024-07-26 12:46 UTC

This package is auto-updated.

Last update: 2024-08-26 13:02:56 UTC


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 XML读取到值对象和XSD模式中。
  • 将此WSDL转换为可用的元数据

这为您提供了在不同层次上的灵活性

  • 您可以指定如何加载WSDL。
  • 您可以使用此包中的WSDL类来运行自己的数据查找/操作。
  • 您可以使用提供的元数据来运行自己的数据查找/操作。
  • ...

阅读器

此包提供了一些可配置的WSDL阅读器。这为您在解析哪个版本的WSDL、使用哪个SOAP版本等方面提供了灵活性...

WSDL1和1.1

WSDL 1 schema

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 2 schema

尚未实现!

控制台

此包扩展了由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')),
            ],        
        ])
    )
);