katalystsol/php-soap-client

通用的PHP SOAP客户端

dev-master / 1.0.x-dev 2018-12-13 22:54 UTC

This package is auto-updated.

Last update: 2024-09-14 19:47:42 UTC


README

通用的SOAP客户端

最初,它被编写为Laravel中的SOAP客户端以访问HomeAway SOAP API。这是一个将代码迁移为简单易用通用SOAP客户端的工作进行中。

目标

  • 创建一种简单的方法与SOAP API交互
  • 为每个API端点方法创建一个类,它只要求最少的数据参数来传递必需的和可选的参数。
  • 支持复杂类型/对象的能力。
  • 尽可能遵守单一责任原则。
    • 每个SOAP API端点/方法都将是一个自己的类,该类配置所需的参数、可选参数和/或复杂类型。它仅在SOAP API更改时才需要更改。

此包符合 PSR-1PSR-2PSR-4。如果您发现符合性疏忽,请通过pull request发送补丁。

安装

通过Composer

$ composer require katalystsol/php-soap-client

要求

以下版本的PHP受此版本支持。

  • PHP 5.6
  • PHP 7.0
  • PHP 7.1
  • PHP 7.2
  • PHP 7.3

它需要以下PHP扩展

  • JSON
  • SimpleXML
  • SOAP

文档

欢迎建设性的反馈...

示例用法

要使用该类,您会

  1. 实例化客户端
  2. 设置传递给方法的参数
  3. 调用方法以返回响应
$wdsl = 'https://secure.instantsoftwareonline.com/StayUSA/ChannelPartners/wsWeblinkPlusAPI.asmx?WSDL';
$soapClientOptions = [
    'trace' => true,
];
$client = new SoapClientLogger(new \SoapClient($wdsl, $soapClientOptions));

$params = [
    'strUserId' => 'testUserId',
    'strPassword' => 'testPassword',
    'strCOID' => '1234',
];

$response = (new Consumer($client))->getBookingPolicies($params);

示例SOAP方法类

use Katalystsol\PhpSoapClient\ConsumerMethod;

class GetBookingPolicies extends ConsumerMethod
{
    protected $requiredParameters = [
        'strUserId',
        'strPassword',
        'strCOID',
    ];

    protected $optionalParameters = [
        'strProperty',
    ];
}

示例复杂类型

这将是一个信用卡类。它还将引用一个单独的复杂类型类 "ClsAddress"。

use Katalystsol\PhpSoapClient\ComplexType;

class ClsCreditCard extends ComplexType
{
    protected function setPropertyKeys()
    {
        $this->propertyKeys = [
            'strToken',
            'strCCType',
            'intExpMonth',
            'intExpYear',
            'strName',
            'objBillingAddress',
            'strEmail',
        ];
    }

    protected function setComplexTypes()
    {
        $this->complexTypes = [
            'objBillingAddress' => ClsAddress::class,
        ];
    }

    protected function setComplexTypeClassName()
    {
        $this->complexTypeClassName = get_class();
    }
}
  • 请参阅测试以获取更多示例。

许可证

MIT许可证(MIT)。有关更多信息,请参阅许可证文件