scriptotek/oai-pmh-client

此软件包已被放弃且不再维护。作者建议使用 caseyamcl/phpoaipmh 软件包。

OAI-PMH 存储库的数据采集软件包

v0.7.1 2016-11-27 21:18 UTC

This package is auto-updated.

Last update: 2022-02-01 12:45:31 UTC


README

Build Status Coverage Code Quality Latest Stable Version Total Downloads

注意:此软件包已被放弃。我建议使用 caseyamcl/phpoaipmh 软件包。它具有几乎相同的接口、优秀的代码质量和更多的贡献者,因此我认为没有理由继续维护此软件包。

php-oai-pmh-client

一个简单的 PHP 客户端软件包,用于从 OAI-PMH 服务器获取数据,使用 Guzzle HTTP 客户端。返回的数据由 QuiteSimpleXMLElement 解析。

在网络问题的情况下,客户端将重试一个可配置的次数,每次发出一个 request.error 事件,最后抛出一个 ConnectionError

使用 Composer 安装

composer require scriptotek/oai-pmh-client

示例

require_once('vendor/autoload.php');
use Scriptotek\OaiPmh\Client as OaiPmhClient;

$url = 'http://oai.bibsys.no/repository';

$client = new OaiPmhClient($url, array(
    'schema' => 'marcxchange',
    'user-agent' => 'MyTool/0.1',
    'max-retries' => 10,
    'sleep-time-on-error' => 30,
));

获取单个记录

try {
    $record = $client->record('oai:bibsys.no:biblio:113889372');
} catch (Scriptotek\OaiPmh\ConnectionError $e) {
    echo $e->getMsg();
    die;
} catch (Scriptotek\OaiPmh\BadRequestError $e) {
    echo 'Bad request: ' . $e->getMsg() . "\n";
    die;
}

echo $record->identifier . "\n";
echo $record->datestamp . "\n";
echo $record->data->asXML() . "\n";

遍历记录集

foreach ($client->records('') as $record) {
	echo $record->identifier . "\n";
	echo $record->datestamp . "\n";
}

事件

$client->on('request.start', function($verb) {
    print "Starting " . $verb . " request\n";
});
$client->on('request.error', function($err) {
    print "Non-fatal error: " . $err . "\n";
});
$client->on('request.complete', function($verb) {
    print "Completed " . $verb . " request\n";
});

API 文档

API 文档可以使用例如 Sami 生成,该工具包含在 composer.json 的开发需求中。

php vendor/bin/sami.php update sami.config.php -v

您可以在 scriptotek.github.io/php-oai-pmh-client 上查看它。