该包已被废弃,不再维护。作者建议使用php-http/httplug包。

一个可以用于规范Web服务调用、添加缓存支持等功能的WebService库。

v0.2.1 2017-04-06 10:25 UTC

This package is not auto-updated.

Last update: 2022-02-01 13:02:30 UTC


README

⚠ 由于HTTPlug更完整且具有相同功能,自HTTPlug以来,本库的开发已停止。

这个PHP库允许您以规范的方式连接到您的Web服务,支持遵循PSR-3和PSR-6的日志和缓存。

Build Status SensioLabsInsight Latest Stable Version Licence

安装

使用Composer进行安装

composer require dldl/webservice

使用方法

以下是一个简单示例,说明如何使用这个库

<?php

namespace MyApp\WebService;

use dLdL\WebService\WebServiceInterface;
use dLdL\WebService\ConnectorInterface;
use dLdL\WebService\ParserInterface;
use dLdL\WebService\Exception\WebServiceException;
use dLdL\WebService\Http\Request;

class FacebookWebService implements WebServiceInterface
{
    private $connector;
    private $parser;
    private $host;

    public function __construct(ConnectorInterface $connector, ParserInterface $parser, $host)
    {
        $this->connector = $connector;
        $this->parser = $parser;
        $this->host = $host;
    }

    public function getConnector()
    {
        return $this->connector;
    }
    
    public function getPosts($facebookUsername)
    {
        try {
            $this->getConnector()->connect($this->host);
        } catch (WebServiceException $e) {
            return [];
        }
        
        $request = new Request($facebookUsername . '/feed');
        $this->getConnector()->getCache()->getConfig()->add($request, 60*60*24);
        
        try {
            $postData = $this->getConnector()->sendRequest($request);
        } catch (WebServiceException $e) {
            return [];
        }
        
        $this->getConnector()->disconnect();
        
        return $this->parser->parse($postData);
    }
}

当然,您可以在捕获块中执行特定操作。

主要思想是将Web服务请求分为三个部分

  • 连接器,负责连接到Web服务,并从预定义请求中抓取和/或发送原始数据
  • 解析器,负责将原始数据转换为业务对象
  • Web服务,负责检查业务条件调用服务,同时也负责将调用委托给连接器解析器

这允许将数据检索的方式与数据使用的方式分离。它可以很容易地缓存、记录、添加代理等扩展,并可以在任何时候更改连接器的类型(例如,从SOAP迁移到REST Web服务)。

连接器必须实现ConnectorInterface。最简单的方法是扩展AbstractConnector类,该类提供了开箱即用的日志和缓存。连接器可以使用任何技术,如cURLGuzzleSoap或任何特定库,但必须独立于它处理的数据。

贡献

每个功能都必须经过测试和文档记录。要贡献

  1. 克隆存储库
  2. 使用composer安装依赖项: composer install
  3. 使用PHPUnit运行测试: ./vendor/bin/phpunit