Signatur
Beschreibung
yaz_itemorder() bereitet eine Extended-Services-Anfrage vom Typ Item Order (ILL = Interlibrary Loan) gemäß dem Z39.50-Standard vor. Die Funktion nutzt eine bestehende YAZ-Verbindungsressource und ein assoziatives Array mit ILL-Request-Parametern, um das benötigte APDU-Paket zusammenzusetzen.
Item-Order-Anfragen werden typischerweise in Bibliothekssystemen eingesetzt, um Fernleihanfragen (Interlibrary Loan Requests) über das Z39.50-Protokoll an entfernte Bibliothekssysteme zu schicken. Dabei wird ein strukturiertes Paket übermittelt, das Angaben zum gewünschten Medium, zum anfragenden Institut sowie zu Lieferbedingungen enthält.
Die eigentliche Übertragung erfolgt asynchron: Nach dem Aufruf von yaz_itemorder() muss yaz_wait() aufgerufen werden, um die Verbindung zu verarbeiten. Anschließend können mit yaz_error() bzw. yaz_errno() etwaige Fehler abgefragt werden.
Hinweis: Die YAZ-Extension und damit diese Funktion ist als veraltet einzustufen und wird in modernen PHP-Versionen nur selten eingesetzt. Sie ist Teil der PECL-YAZ-Erweiterung und setzt eine installierte YAZ-Bibliothek voraus.
Parameter
| Name | Typ | Default | Beschreibung |
|---|---|---|---|
| $id Pflicht | resource | Die YAZ-Verbindungsressource, die zuvor mit yaz_connect() erzeugt wurde. |
|
| $args Pflicht | array | Assoziatives Array mit ILL-Request-Parametern. Die Schlüssel entsprechen den Feldern des ILL-Request-Pakets gemäß Z39.50-Spezifikation, z. B. contact-name, contact-phone, itemorder-item u. a. |
Rückgabewert
yaz_wait() über yaz_error() oder yaz_errno() abgefragt werden.Beispiele
Einfache Item-Order-Anfrage über Z39.50
<?php
// Verbindung zu einem Z39.50-Server aufbauen
$id = yaz_connect('z3950.example.com:210/INNOPAC');
if (!$id) {
die('Verbindung fehlgeschlagen.');
}
// ILL-Request-Parameter definieren
$args = [
'contact-name' => 'Max Mustermann',
'contact-phone' => '+49 30 12345678',
'contact-email' => 'max.mustermann@bibliothek.de',
'itemorder-item' => '123456789',
];
// Item-Order vorbereiten
yaz_itemorder($id, $args);
// Verbindung verarbeiten (asynchron)
yaz_wait();
// Fehlerprüfung
$errno = yaz_errno($id);
if ($errno != 0) {
echo 'Fehler ' . $errno . ': ' . yaz_error($id) . PHP_EOL;
} else {
echo 'Item-Order erfolgreich übermittelt.' . PHP_EOL;
}
?>
Item-Order mit erweitertem ILL-Paket
<?php
$id = yaz_connect('z3950.bibliothek.de:210/catalog');
$args = [
'contact-name' => 'Erika Musterfrau',
'contact-phone' => '+49 89 9876543',
'contact-email' => 'erika@uni-bibliothek.de',
'itemorder-item' => '987654321',
'pickup-location' => 'Hauptbibliothek Berlin',
'client-id-for-copies'=> 'UB-BERLIN-001',
];
yaz_itemorder($id, $args);
yaz_wait();
if (yaz_errno($id) === 0) {
echo 'Fernleihanfrage wurde erfolgreich gesendet.';
} else {
echo 'Fehler: ' . yaz_error($id);
}
?>
// Wichtig · Fallstricke
Veraltete Technologie: Die YAZ-PHP-Extension (PECL) wird seit Jahren kaum weiterentwickelt. Für neue Projekte sollten moderne Alternativen (z. B. direkte TCP-Kommunikation oder spezialisierte Bibliotheksmiddleware) in Betracht gezogen werden.
Asynchrones Modell: yaz_itemorder() bereitet die Anfrage lediglich vor. Ohne anschließenden Aufruf von yaz_wait() wird die Anfrage nicht tatsächlich übertragen. Fehlerbehandlung ist immer erst nach yaz_wait() sinnvoll.
Voraussetzungen: Diese Funktion setzt die installierte PECL-YAZ-Extension sowie die native YAZ-Bibliothek (libyaz) auf dem Server voraus. Ohne diese ist die Funktion nicht verfügbar.