qbnk / qbank3api-phpwrapper
QBank 3 API的PHP包装器。为从PHP中与QBank 3进行通信提供了一种简单的方法。
Requires
- php: >=8.1
- ext-json: *
- guzzlehttp/guzzle: ^7.4
- kamermans/guzzle-oauth2-subscriber: ^1.0
- psr/log: ~3.0
- psr/simple-cache: ^3.0
- symfony/cache: ^6.3
Requires (Dev)
- mockery/mockery: ^1.3.5
- phpunit/phpunit: ^8.5
- roave/security-advisories: dev-latest
Suggests
- monolog/monolog: Great logging alternative.
- dev-master
- 7.0.13
- 7.0.12
- 7.0.11
- 7.0.10
- 7.0.9
- 7.0.8
- 7.0.7
- 7.0.6
- 7.0.5
- 7.0.4
- 7.0.3
- 7.0.2
- 7.0.1
- 7.0.0
- 6.3.2
- 6.3.1
- 6.2.1
- 6.2.0
- 6.1.5
- v6.1.4
- v6.1.3
- v6.1.2
- 6.1.1
- 6.1.0
- 6.0.1
- 6.0.0
- 5.x-dev
- 5.1.6
- 5.1.5
- 5.1.4
- 5.1.3
- 5.1.2
- 5.1.1
- 5.1.0
- 5.0.3
- 5.0.2
- v5.0.1
- v5.0.0
- v4.9.2
- v4.9.1
- v4.9.0
- v4.8.0
- v4.7.0
- v4.6.0
- v4.5
- v4.4.1
- v4.4
- 4.3
- v4.2
- v4.1
- v4.0.1
- v4.0.0
- 3.4.13
- 3.4.12
- 3.4.11
- 3.4.10
- 3.4.9
- 3.4.8
- 3.4.7
- 3.4.6
- 3.4.5
- v3.4.4
- v3.4.3
- v3.4.2
- v3.4.1
- v3.4
- v3.3
- v3.2.1
- v3.2
- v3.1.1
- v3.1
- v3.0.1
- v3.0
- 2.1.10
- 2.1.9
- v2.1.8
- v2.1.7
- v2.1.6
- v2.1.5
- v2.1.4
- v2.1.3
- v2.1.2
- v2.1.1
- v2.1.0
- v2.0.15
- v2.0.14
- v2.0.13
- v2.0.12
- v2.0.11
- v2.0.10
- v2.0.9
- v2.0.8
- v2.0.7
- v2.0.6
- v2.0.5
- v2.0.4
- v2.0.3
- v2.0.2
- v2.0.1
- v2.0
- 1.4.x-dev
- v1.4.2
- v1.4.1
- v1.4.0
- 1.3.x-dev
- v1.3.4
- v1.3.3
- v1.3.2
- v1.3.1
- v1.3.0
- v1.2.14
- v1.2.13
- v1.2.12
- v1.2.11
- v1.2.10
- v1.2.9
- v1.2.8
- v1.2.7
- v1.2.6
- v1.2.5
- v1.2.4
- v1.2.3
- v1.2.2
- v1.2.1
- 1.2.0
- 1.1.x-dev
- v1.1.0
- 1.0.x-dev
- v1.0.14
- v1.0.13
- v1.0.12
- v1.0.11
- v1.0.10
- 1.0.9
- v1.0.8
- v1.0.7
- v1.0.6
- v1.0.5
- v1.0.4
- v1.0.3
- v1.0.2
- v1.0.1
- v1.0.0
- v0.14.1
- v0.14.0
- v0.13.0
- v0.12.1
- v0.12.0
- v0.11.3-alpha
- v0.11.2-alpha
- v0.11.1-alpha
- v0.11.0-alpha
- v0.10.5-alpha
- v0.10.4-alpha
- v0.10.3-alpha
- v0.10.2-alpha
- v0.10.1-alpha
- v0.10.0-alpha
- v0.9.0-alpha
- v0.8.0-alpha
- v0.7.0-alpha
- v0.6.4-alpha
- v0.6.3-alpha
- v0.6.2-alpha
- v0.6.1-alpha
- v0.6.0-alpha
- v0.5.1-alpha
- v0.5.0-alpha
- v0.4.2-alpha
- v0.4.1-alpha
- v0.4.0-alpha
- v0.3.0-alpha
- v0.2.0-alpha
- v0.1.8-alpha
- v0.1.7-alpha
- v0.1.6-alpha
- v0.1.5-alpha
- v0.1.4-alpha
- v0.1.3-alpha
- v0.1.2-alpha
- v0.1.1-alpha
- dev-add-templateId-zero
- dev-get-original-with-correct-deploymentsite
- dev-backport/v6-symfony-caching
- dev-backport/signedUrlEnable
- dev-addedPropertyTypeOptions
- dev-backport/upload-signed-urls
- dev-backport/remove-body-get-delete-requests3
- dev-backport/remove-body-get-delete-requests
- dev-bugfix/signedUrl
- dev-backport/v6-signed-urls
- dev-backport/addPropertyType
- dev-updatePropertyType
- dev-feature/expose-basePath-function
- dev-addUserToGroups
- dev-bugfix/namespaced-cache-keys
- dev-bugfix/updateCredentials-port
- dev-feature/php-81
- dev-backport/omit-type-definitions-client
- dev-bugfix/user-swapping
- dev-backport/user-swapping
- dev-backport/user-search-3.4
- dev-backport/user-search
- dev-hotfix/baseurl-issue-fix
This package is auto-updated.
Last update: 2024-09-04 07:59:53 UTC
README
简介
QBank 3 API PHP包装器是一个库,使得您可以从PHP直接使用QBank 3 API变得容易。无需自己处理连接或解释结果。
安装
通过composer安装。
{
"require": {
"qbnk/qbank3api-phpwrapper": "dev-master"
}
}
升级
每个主要版本都带来了向后不兼容的更改。请参阅UPGRADING.md中的具体说明。
使用方法
本文档假设您已经熟悉QBank的概念。如果您不熟悉或者需要参考,请阅读QBank知识库中的文章。知识库位于:support.qbank.se
通过创建一个新的QBankApi
来实例化包装器。该QBankApi
类构造函数接受三个参数,其中两个是必需的。第一个是要连接的QBank API的URL。如果QBank由QBNK托管,则QBank的域名就足够了;否则,需要API端点的完整URL。
第二个参数是一个包含所有必要信息的Credentials
对象,用于对QBank进行身份验证。这些如下所示
- 客户端ID - 一个用于识别调用者的唯一ID。由QBNK发行,通常每个组织一个。
- 用户名 - QBank中用户的用户名。您连接到的内容和使用权限由它决定。
- 密码 - 用户的密码。
要获取客户端ID,请联系我们support@qbank.se
<?php
use QBNK\QBank\API\QBankApi;
use QBNK\QBank\API\Credentials;
$credentials = new Credentials('CLIENT_ID', 'myUsername', 'myPassword');
$qbankApi = new QBankApi('customer.qbank.se', $credentials);
搜索
搜索是查找QBank中的Media
的关键。通常,人们至少会有一组用于列出Media
的准则,但即使想要显示所有内容,搜索也是必经之路。要找到QBank中的所有Media
,您将执行一个不带参数的搜索。如果没有设置过滤选项,搜索将与终端中的*
通配符类似,匹配所有内容。
<?php
use QBNK\QBank\API\QBankApi;
use QBNK\QBank\API\Credentials;
use QBNK\QBank\API\Model\Search;
$credentials = new Credentials('CLIENT_ID', 'myUsername', 'myPassword');
$qbankApi = new QBankApi('customer.qbank.se', $credentials);
$results = $qbankApi->search()->search(new Search());
var_dump(count($results)); // Prints: int(50)
但我们为什么只得到了50个结果,而我们的QBank包含数千个Media
呢?简单的答案是,搜索是分页的,以避免数据洪流并在合理的时间内返回结果。默认的页面大小是50。要获取多页结果,每页包含您选择的结果数量,非常简单。
<?php
use QBNK\QBank\API\QBankApi;
use QBNK\QBank\API\Credentials;
use QBNK\QBank\API\Model\Search;
$credentials = new Credentials('CLIENT_ID', 'myUsername', 'myPassword');
$qbankApi = new QBankApi('customer.qbank.se', $credentials);
$search = new Search();
$search->setLimit(10);
for ($i = 0; $i < 5; $i++) {
$search->setOffset($i * $search->getLimit());
$results = $qbankApi->search()->search($search);
var_dump(count($results));
}
/*
Prints:
int(10)
int(10)
int(10)
int(10)
int(10)
*/
已执行搜索的结果是一个SearchResult
对象。这是一个围绕Media
对象数组的包装器类,但附加了一些额外信息。其中之一是非常有用的getTotalHits()
方法。使用它,您可以使用合理的限制进行搜索,并仍然打印出总结果数。然后您可以根据需要编写代码来获取更多结果。
SearchResult
还实现了Iterator
接口,因此您可以像常规数组一样遍历它。这使得显示结果变得容易。
<?php
use QBNK\QBank\API\QBankApi;
use QBNK\QBank\API\Credentials;
use QBNK\QBank\API\Model\Search;
$credentials = new Credentials('CLIENT_ID', 'myUsername', 'myPassword');
$qbankApi = new QBankApi('customer.qbank.se', $credentials);
$results = $qbankApi->search()->search(new Search());
var_dump(count($results)); // Prints: int(50)
var_dump($results->getTotalHits()); // Prints: int(34814);
foreach ($results as $media) { //Prints a list of 50 media id and name combinations
echo 'ID: '.$media->getMediaId().' Name: '.$media->getName()."\n";
}
使用准则搜索
通常我们有一些默认的准则,比如Media
属于特定的Category
或者可能部署到特定的站点。这可以通过向Search
对象添加准则轻松完成。
<?php
use QBNK\QBank\API\QBankApi;
use QBNK\QBank\API\Credentials;
use QBNK\QBank\API\Model\Search;
$credentials = new Credentials('CLIENT_ID', 'myUsername', 'myPassword');
$qbankApi = new QBankApi('customer.qbank.se', $credentials);
$search = new Search()
->setCategoryIds([1, 2]);
->setDeploymentSiteIds([1])
;
$results = $qbankApi->search()->search($search);
您还可以根据属性
进行筛选。这可以通过将PropertyCriteria
添加到您的搜索对象中完成。但是,这不会获取在SearchResult
中设置的属性。要获取SearchResult
中Media
的Property
值,必须将PropertyRequest
添加到Search
对象中。
<?php
use QBNK\QBank\API\QBankApi;
use QBNK\QBank\API\Credentials;
use QBNK\QBank\API\Model\Search;
$credentials = new Credentials('CLIENT_ID', 'myUsername', 'myPassword');
$qbankApi = new QBankApi('customer.qbank.se', $credentials);
$search = new Search()
->setProperties([
new PropertyRequest()->setSystemName('property1'),
new PropertyCriteria()->setSystemName('property2')
])
;
$results = $qbankApi->search()->search($search);
还有许多其他筛选搜索的可能性,这只是一个演示中最常用的几种。浏览一下Search
类中的设置器,应该可以很清楚地知道可以做什么。
事件
事件是向QBank报告已发生值得收集统计数据的调用,即事件。事件统计数据在QBank中显示。
要报告事件,必须获取会话ID。会话ID在一段时间内标识正在执行的用户。要获取会话ID,必须提供会话来源。会话来源标识事件的来源(例如,前端、API、应用)。要获取会话来源,请联系support@qbank.se。
<?php
use QBNK\QBank\API\QBankApi;
use QBNK\QBank\API\Credentials;
use QBNK\QBank\API\Model\Search;
$credentials = new Credentials('CLIENT_ID', 'myUsername', 'myPassword');
$qbankApi = new QBankApi('customer.qbank.se', $credentials);
$sessionId = $qbankApi->events()->session(SESSION_SOURCE_ID, 'identifierhash', '127.0.0.1', 'CustomApp/1.0', USER_ID);
$qbankApi->events()->view($sessionId, MEDIA_ID);
要报告自定义事件(未被现有方法覆盖的事件),只需使用custom()
方法。这些将与其他事件一起显示在统计数据中。
<?php
use QBNK\QBank\API\QBankApi;
use QBNK\QBank\API\Credentials;
use QBNK\QBank\API\Model\Search;
$credentials = new Credentials('CLIENT_ID', 'myUsername', 'myPassword');
$qbankApi = new QBankApi('customer.qbank.se', $credentials);
$sessionId = $qbankApi->events()->session(SESSION_SOURCE_ID, 'identifierhash', '127.0.0.1', 'CustomApp/1.0', USER_ID);
$qbankApi->events()->custom($sessionId, MEDIA_ID, 'Some custom event');
还可以报告外部使用情况,例如来自CMS或其他应用。这不在统计中显示,但在QBank的媒体详情中显示。这提供了一个很好的概述,说明了媒体的使用情况。当然,如果不再使用,也可以删除使用报告。请参阅addUsage()
和removeUsage()
方法。