Signatur
Beschreibung
yaz_addinfo() liefert einen erweiterten Fehlertext zur zuletzt fehlgeschlagenen YAZ-Operation auf einer gegebenen Verbindungsressource. Während yaz_error() nur eine kurze Fehlermeldung zurückgibt, enthält yaz_addinfo() oft detailliertere, serversspezifische Zusatzinformationen, die von Z39.50-Servern übermittelt werden.
Die Funktion ist besonders nützlich beim Debugging von Verbindungs- oder Suchanfrageproblemen mit Z39.50-Bibliothekssystemen. Viele Server senden zusammen mit einem Fehlercode einen zusätzlichen Beschreibungstext (Addinfo), der den eigentlichen Grund des Fehlers genauer beschreibt – zum Beispiel welches Suchfeld unbekannt ist oder welche Syntax nicht unterstützt wird.
Typischerweise wird yaz_addinfo() in Kombination mit yaz_errno() und yaz_error() eingesetzt, um eine vollständige Fehlerdiagnose zu ermöglichen. Ist kein Fehler aufgetreten oder stellt der Server keine Zusatzinformation bereit, wird ein leerer String zurückgegeben.
Parameter
| Name | Typ | Default | Beschreibung |
|---|---|---|---|
| $id Pflicht | resource | Die YAZ-Verbindungsressource, die von yaz_connect() zurückgegeben wurde. |
Rückgabewert
Beispiele
Fehlerdiagnose nach fehlgeschlagener Suche
<?php
$id = yaz_connect('z3950.example.com:210/Default');
if ($id) {
yaz_syntax($id, 'usmarc');
yaz_search($id, 'rpn', '@attr 1=4 "PHP"');
yaz_wait();
$errno = yaz_errno($id);
if ($errno !== 0) {
$error = yaz_error($id);
$addinfo = yaz_addinfo($id);
echo "Fehlercode: " . $errno . "\n";
echo "Fehlermeldung: " . $error . "\n";
if ($addinfo !== '') {
echo "Zusatzinfo: " . $addinfo . "\n";
}
} else {
echo "Suche erfolgreich.\n";
}
} else {
echo "Verbindung fehlgeschlagen.\n";
}
Hilfsfunktion zur vollständigen Fehlerausgabe
<?php
function yaz_diagnose(resource $id): string {
$errno = yaz_errno($id);
if ($errno === 0) {
return 'Kein Fehler.';
}
$msg = yaz_error($id);
$addinfo = yaz_addinfo($id);
$result = "Fehler [{$errno}]: {$msg}";
if ($addinfo !== '') {
$result .= " (Details: {$addinfo})";
}
return $result;
}
// Beispielaufruf nach einer Operation:
// $id = yaz_connect(...);
// ...
// echo yaz_diagnose($id);
// Wichtig · Fallstricke
Hinweis zur PECL-Erweiterung: Die YAZ-Erweiterung ist nicht standardmäßig in PHP enthalten und muss über PECL installiert werden (pecl install yaz). Außerdem ist die native libyaz-Bibliothek erforderlich.
Deprecation: Die YAZ-Erweiterung wird seit längerem nicht mehr aktiv gepflegt und gilt in modernen PHP-Projekten als veraltet. Für neue Projekte mit Z39.50-Anbindung sollten alternative Bibliotheken in Betracht gezogen werden.
Die Zusatzinformation in yaz_addinfo() ist serverabhängig – nicht alle Z39.50-Server liefern detaillierte Addinfo-Strings. Daher sollte der Rückgabewert stets auf Leerstring geprüft werden, bevor er angezeigt wird.