Signatur
Beschreibung
snmp_get_valueretrieval() liefert den aktuell konfigurierten Rückgabemodus für SNMP-Werte. Dieser Modus steuert, in welcher Form die SNMP-Extension Werte aus Netzwerkgeräten zurückliefert – etwa ob Typ-Informationen eingeschlossen werden oder ob Werte als einfache Strings zurückgegeben werden.
Der Rückgabewert ist eine Bitmaske aus den Konstanten SNMP_VALUE_LIBRARY, SNMP_VALUE_PLAIN und SNMP_VALUE_OBJECT. Der Standardwert ist SNMP_VALUE_LIBRARY, wodurch Werte im nativen Format der Net-SNMP-Bibliothek zurückgegeben werden.
Die Funktion arbeitet als Gegenstück zu snmp_set_valueretrieval() und erlaubt es, den aktuellen Zustand abzufragen, bevor er temporär geändert und später wiederhergestellt wird. Dies ist besonders nützlich in Bibliotheken oder Modulen, die den globalen Zustand nicht dauerhaft verändern wollen.
Rückgabewert
SNMP_VALUE_LIBRARY (0), SNMP_VALUE_PLAIN (1) und SNMP_VALUE_OBJECT (2).Beispiele
Aktuellen Rückgabemodus abfragen
<?php
// Aktuellen Modus abfragen
$currentMode = snmp_get_valueretrieval();
switch ($currentMode) {
case SNMP_VALUE_LIBRARY:
echo 'Modus: SNMP_VALUE_LIBRARY (Net-SNMP-Format)' . PHP_EOL;
break;
case SNMP_VALUE_PLAIN:
echo 'Modus: SNMP_VALUE_PLAIN (einfache Strings)' . PHP_EOL;
break;
case SNMP_VALUE_OBJECT:
echo 'Modus: SNMP_VALUE_OBJECT (Objekte mit Typ und Wert)' . PHP_EOL;
break;
default:
echo 'Kombinierter Modus: ' . $currentMode . PHP_EOL;
}
Modus temporär ändern und wiederherstellen
<?php
// Aktuellen Modus sichern
$previousMode = snmp_get_valueretrieval();
// Temporär auf SNMP_VALUE_OBJECT umschalten
snmp_set_valueretrieval(SNMP_VALUE_OBJECT);
// SNMP-Abfrage im Objekt-Modus durchführen
$result = snmpget('192.168.1.1', 'public', 'sysDescr.0');
if ($result !== false) {
// $result ist jetzt ein Objekt mit Typ- und Wert-Eigenschaften
var_dump($result);
}
// Ursprünglichen Modus wiederherstellen
snmp_set_valueretrieval($previousMode);
echo 'Modus wiederhergestellt: ' . snmp_get_valueretrieval() . PHP_EOL;
// Wichtig · Fallstricke
Globaler Zustand: Der Rückgabemodus ist ein globaler Zustand der SNMP-Extension. Änderungen durch snmp_set_valueretrieval() wirken sich auf alle nachfolgenden SNMP-Aufrufe innerhalb desselben PHP-Prozesses aus. Es empfiehlt sich daher, den alten Modus vor einer Änderung mit snmp_get_valueretrieval() zu sichern und nach der Operation wiederherzustellen.
Klassen-basierte API: Ab PHP 5.4 steht die objektorientierte SNMP-Klasse zur Verfügung, die eine instanzbasierte Konfiguration ohne globalen Zustand ermöglicht und daher für neue Projekte bevorzugt werden sollte.