reneoelke / Php53to54

PHP_CodeSniffer standard for compatibility checking of PHP 5.3 to 5.4 migrations.
http://foobugs.com
Other
6 stars 1 forks source link

SNMP Other Changes #36

Open Ephigenia opened 12 years ago

Ephigenia commented 12 years ago

Dropped UCD-SNMP compatibility code, consider upgrading to net-snmp v5.3+, Net-SNMP v5.4+ is required for Windows version. In sake of adding support for IPv6 DNS name resolution of remote SNMP agent (peer) is done by extension now, not by Net-SNMP library anymore. (Other Changes)

Was kann das wohl bedeuten? Was muss man hier machen?

reneoelke commented 12 years ago

Die folgenden Seiten sind interessant und aufschlussreich: http://www.php.net/manual/en/intro.snmp.php und http://www.php.net/manual/en/snmp.installation.php

Will heißen, um UCD SNMP muss man sich keine Gedanken machen, da die SNMP-Erweiterung als Wrapper fungiert. Die PHP Funktionen sollten also sowohl bei Verwendung von Net-SNMP oder UCD SNMP identisch funktionieren bzw. vorhanden sein.

Es wäre jedoch eventuell sinnvoll, bei Verwendung der snmp-Funktionen eine Meldung auszugeben, dass sich etwas bzgl. der verwendeten Lib geändert hat (z.B. "SNMP-Erweiterung wird verwendet. Bitte beachten, dass die Lib UCD SNMP nicht mehr unterstützt wird und Net-SNMP in Version 5.3 bzw. 5.4 (Windows) nötig ist.").

Was die DNS Name Resolution betrifft, würde ich mir auch keine Gedanken machen. Ob dies nun in der PHP-Erweiterung oder in der Lib supportet wird, ist für den Entwickler egal.

Allerdings ist diese Aussage viel interessanter: "Functions now return FALSE on every error condition including SNMP-related". Leider kann man in der Doku nicht prüfen, wie die Rückgabewerte vorher aussahen. Wenn also Rückgabewerte dieser Funktionen verwendet werden (z.B. $result = snmp_get_quick_print()), dann sollte man eine entsprechenden Hinweis geben, dass Fehler nur noch als FALSE gekennzeichnet werden.

Ephigenia commented 12 years ago

Es wäre jedoch eventuell sinnvoll, bei Verwendung der snmp-Funktionen eine Meldung auszugeben, dass sich etwas bzgl. der verwendeten Lib geändert hat (z.B. "SNMP-Erweiterung wird verwendet. Bitte beachten, dass die Lib UCD SNMP nicht mehr unterstützt wird und Net-SNMP in Version 5.3 bzw. 5.4 (Windows) nötig ist.").

Ja das finde ich gut mit dem Hinweis! Also alle Aufrufe von SNMP-Funktionen sollten eine Warnung ausgeben. Zusätzlich muss man noch sniffen, ob die OOP-API von SNMP verwendet wird. Mit extend oder new SNMP.

Das mit den Fehlermeldungen hab’ ich noch nicht so ganz verstanden? Dann müsste man ja bei jeder Verwendung einer SNMP Funktion eine Warnung ausgeben?

reneoelke commented 12 years ago

Ich würde nicht die gesamte OOP-API von SNMP prüfen, sondern nur, ob es eine eigene Klasse class SNMP oder ein Interface interface SNMP im globalen Namespace gibt. Und ob von dieser abgeleitet bzw. diese instanziiert wird. Das Wort SNMP ist in diesem Zusammenhang sozusagen ein reserviertes Wort. Das OOP-API gibt es ja erst ab 5.4.

Jedes Mal, wenn eine SNMP-Funktion verwendet wird, muss der Rückgabewert geprüft werden. Dies betrifft u.a. folgende Code-Beispiele:

Eine Warnung mit dem Hinweis, dass der Code geprüft werden muss, wäre sinnvoll. Denn es hat sich ja nun die API bzgl. des Rückgabewertes geändert. Aber sinnvoll wäre es natürlich, vorher zu prüfen, wie genau sich das Verhalten unter 5.3 und 5.4 unterscheidet.