Start · Sprachen · PHP · Referenz · yaz_itemorder

yaz_itemorder

Funktion

Bereitet eine Z39.50-Item-Order-Anfrage (ILL-Request) auf einer YAZ-Verbindung vor und sendet das entsprechende APDU-Paket.

seit PHP 4.0.1 Kategorie: misc

Signatur

yaz_itemorder(resource $id, array $args): void

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

Typ
void
Beschreibung
Die Funktion gibt keinen Wert zurück. Fehler müssen nach 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 erfolgreich übermittelt.

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);
}
?>
Fernleihanfrage wurde erfolgreich gesendet.

// 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.