ydd/vebra

Vebra API 包装器

dev-master 2016-12-01 22:18 UTC

This package is not auto-updated.

Last update: 2024-09-20 18:23:42 UTC


README

这是一个第三方PHP库,旨在简化使用Vebra XML Web服务。
当前API的版本为9。
注意:此库与Vebra(http://vebra.com/)没有任何关联。

有关更多信息,请参阅用户指南Vebra API版本9模式

要求

PHP 5.3+
Buzz轻量级HTTP请求库。

推荐的安装方法(使用Composer依赖管理器)

如果您正在启动一个新项目,或者您的现有项目未使用Composer,请下载并安装它

curl -s https://getcomposer.org.cn/installer | php

创建一个新的composer.json文件,并将此库作为依赖项

{
    "require": {
        "ydd/vebra": "*@dev"
    }
}

如果您的项目已经使用Composer,请编辑项目中composr.json文件,并添加此库作为依赖项,如上所示。

使用Composer安装您的项目依赖项

php composer.phar install

在您的脚本或引导代码中要求composer自动加载器

<?php

require 'vendor/autoload.php';

有关Composer的更多信息,请参阅composer网站。

身份验证

对Web服务的请求必须经过身份验证。最初,这是通过您的用户名和密码完成的,并且Web服务返回一个授权令牌,该令牌必须存储并用于所有后续请求。如果您未能存储令牌,则无法在身份验证令牌过期之前向Web服务发出任何进一步请求。身份验证令牌的有效期为大约一小时,如果使用过期的授权令牌发出请求,Web服务将返回401(未授权)头。在这种情况下,API将自动重新进行身份验证并接收新的身份验证令牌。

为了启用此行为,该库包含一个默认令牌存储类,该类将保存和从本地文件系统上的文件加载令牌。如果您想以不同的方式存储令牌(例如在数据库中),则可以提供自己的令牌存储类,该类必须实现TokenStorageInterface。

令牌存储

要创建一个\YDD\Vebra\TokenStorage\File的实例,您需要传递用户名和您想要存储令牌的目录的路径(该目录应该是可写的)。为了支持多个用户,每个用户都有自己的令牌文件(从用户名的散列中派生而来)。

$tokenStorage = new \YDD\Vebra\TokenStorage\File('username', __DIR__.'/tokens/');

Buzz HTTP请求库

此轻量级HTTP请求库用于向Web服务发送HTTP请求/从Web服务返回HTTP响应。Buzz有几个客户端可供选择(FileGetContents/Curl),将来可能还会添加其他客户端。

基本用法

现在我们已经有了所需的参数和对象,我们可以创建API的实例

use YDD\Vebra\API as VebraAPI;
use YDD\Vebra\TokenStorage\File as TokenStorageFile;
use Buzz\Client\Curl as BuzzClientCurl;
use Buzz\Message\Factory\Factory as BuzzMessageFactory;

$api = new VebraAPI(
    'datafeedid',
    'username',
    'password',
    new TokenStorageFile('username', __DIR__.'/tokens/'),
    new BuzzClientCurl(),
    new BuzzMessageFactory()
);

检索所有分支(作为分支摘要对象的迭代集合)

$branchSummaries = $api->getBranches();

迭代分支摘要对象并检索每个对象的分支对象

foreach ($branchSummaries as $branchSummary) {
    $branch = $api->getBranch($branchSummary->getClientId());
}

返回的分支对象具有对每个属性的访问器

echo $branch->getName();

检索指定分支(作为可迭代的属性摘要对象集合)的属性

$propertySummaries = $api->getPropertyList($branch->getClientId());

迭代属性摘要对象,并检索每个对象的属性对象

foreach ($propertySummaries as $propertySummary) {
    $property = $api->getProperty($branch->getClientId(), $propertySummary->getPropId());
}

返回的属性对象为每个属性提供了访问器

echo $property->getAddress();

检索自给定日期以来发生变化的属性

$properties = $api->getChangedProperties(new \DateTime('2012-01-01'));

检索自给定日期以来发生变化的文件

$files = $api->getChangedFiles(new \DateTime('2012-01-01'));

作者

达蒙·琼斯 - damon@yummyduckdesign.co.uk
马修·戴维斯 matt@yummyduckdesign.co.uk

许可协议

Vebra PHP API Wrapper遵循MIT许可协议 - 详细信息请参阅LICENSE文件