Start · Sprachen · PHP · Referenz · snmp_set_valueretrieval

snmp_set_valueretrieval

Funktion

Legt die Methode fest, wie SNMP-Werte zurückgegeben werden (als Zeichenkette oder als typisiertes Objekt).

seit PHP 5.0.0 Kategorie: http

Signatur

snmp_set_valueretrieval(int $method): bool

Beschreibung

snmp_set_valueretrieval() steuert, in welcher Form SNMP-Funktionen wie snmpget() oder snmprealwalk() ihre Werte zurückliefern. Standardmäßig werden SNMP-Werte als einfache Zeichenketten zurückgegeben. Mit dieser Funktion lässt sich dieses Verhalten global ändern.

Es stehen zwei Konstanten zur Auswahl: SNMP_VALUE_LIBRARY (Standardwert, gibt den Wert als Zeichenkette zurück, wie ihn die SNMP-Bibliothek formatiert), SNMP_VALUE_PLAIN (gibt den rohen Wert ohne Typ-Information zurück) und SNMP_VALUE_OBJECT (gibt ein Objekt mit den Eigenschaften type und value zurück). Diese Konstanten können per bitweisem ODER kombiniert werden, um das genaue Rückgabeformat zu steuern.

Die Einstellung wirkt sich global auf alle nachfolgenden SNMP-Aufrufe in demselben PHP-Prozess aus. Wenn sowohl SNMP_VALUE_OBJECT als auch SNMP_VALUE_PLAIN gesetzt sind, wird ein Objekt zurückgegeben, dessen value-Eigenschaft den rohen Wert enthält. Diese Funktion ist besonders nützlich, wenn SNMP-Daten typsicher weiterverarbeitet werden sollen.

Parameter

Name Typ Default Beschreibung
$method Pflicht int Eine der folgenden Konstanten oder eine bitweise Kombination davon: SNMP_VALUE_LIBRARY (0), SNMP_VALUE_PLAIN (1) oder SNMP_VALUE_OBJECT (2). Kombinationen wie SNMP_VALUE_OBJECT | SNMP_VALUE_PLAIN sind erlaubt.

Rückgabewert

Typ
bool
Beschreibung
Gibt true zurück, wenn die Methode erfolgreich gesetzt wurde, andernfalls false.

Beispiele

SNMP-Werte als typisiertes Objekt abrufen

<?php
// Rückgabe als Objekt mit 'type' und 'value'-Eigenschaften aktivieren
snmp_set_valueretrieval(SNMP_VALUE_OBJECT);

$result = snmpget('192.168.1.1', 'public', '1.3.6.1.2.1.1.1.0');

if ($result !== false) {
    echo 'Typ:  ' . $result->type . PHP_EOL;
    echo 'Wert: ' . $result->value . PHP_EOL;
}
Typ: 4 Wert: Linux router 5.4.0

SNMP-Werte als Objekt mit rohem (Plain) Wert abrufen

<?php
// Objekt zurückgeben, aber Wert ohne Formatierung der Bibliothek
snmp_set_valueretrieval(SNMP_VALUE_OBJECT | SNMP_VALUE_PLAIN);

$result = snmpget('192.168.1.1', 'public', '1.3.6.1.2.1.2.2.1.10.1');

if ($result !== false) {
    echo 'SNMP-Typ-ID: ' . $result->type . PHP_EOL;
    echo 'Roher Wert:  ' . $result->value . PHP_EOL;
}
SNMP-Typ-ID: 65 Roher Wert: 123456789

Auf Standard-Zeichenkettenwert zurücksetzen

<?php
// Standard: Wert als formatierte Zeichenkette der SNMP-Bibliothek
snmp_set_valueretrieval(SNMP_VALUE_LIBRARY);

$result = snmpget('192.168.1.1', 'public', '1.3.6.1.2.1.1.3.0');
echo $result; // z. B. "Timeticks: (12345678) 1 day, 10:17:58.78"
Timeticks: (12345678) 1 day, 10:17:58.78

// Wichtig · Fallstricke

Globale Auswirkung: Die Einstellung gilt für alle nachfolgenden SNMP-Aufrufe im selben PHP-Prozess. Wenn mehrere SNMP-Anfragen unterschiedliche Rückgabeformate benötigen, muss snmp_set_valueretrieval() vor jedem Aufruf entsprechend gesetzt werden.

Alternativ kann das Rückgabeformat auch je Instanz über die Eigenschaft valueretrieval der SNMP-Klasse gesteuert werden, was in objektorientierten Anwendungen die bevorzugte Methode ist, um globale Seiteneffekte zu vermeiden.

Die Funktion steht nur zur Verfügung, wenn PHP mit SNMP-Unterstützung kompiliert wurde (d. h. die php-snmp-Erweiterung ist aktiviert).