Simple PHP client package for fetching data from an OAI-PMH server, using the Guzzle HTTP client. The returned data is parsed by QuiteSimpleXMLElement.
On network problems, the client will retry a configurable number of times,
emitting a request.error
event each time, before finally throwing
a ConnectionError
.
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 documentation can be generated using e.g. Sami,
which is included in the dev requirements of composer.json
.
php vendor/bin/sami.php update sami.config.php -v
You can view it at scriptotek.github.io/php-oai-pmh-client