Part of my diploma thesis was to create web interface to command device via SNMP. So I create my own level of abstraction over SNMP class:<?phpclass snmp_lib { private $snmpInstance; private $VERSION = SNMP::VERSION_1; private $HOST = '192.168.0.150'; private $passwordRead = '000000000000'; private $passwordWrite = 'private'; private $releys = array(1 => '1.3.6.1.4.1.19865.1.2.1.1.0', 2 => '1.3.6.1.4.1.19865.1.2.1.2.0'); private $allPorts = array('3' => '1.3.6.1.4.1.19865.1.2.1.33.0', '5' => '1.3.6.1.4.1.19865.1.2.2.33.0'); public function __construct($action) { if (in_array($action, array('read', 'write'))) { if (strcmp($action, 'read') === 0) { $this->_read(); } else { $this->_write(); } } } private function _read() { $this->snmpInstance = new SNMP($this->VERSION, $this->HOST, $this->passwordRead); } private function _write() { $this->snmpInstance = new SNMP($this->VERSION, $this->HOST, $this->passwordWrite); } public function closeSession() { return $this->snmpInstance->close(); } public function activate($relay) { $this->snmpInstance->set($this->releys[$relay], 'i', '1'); } public function deactivate($relay) { $this->snmpInstance->set($this->releys[$relay], 'i', '0'); } public function getAllPortsStatus() { $allPins = array(); foreach ($this->allPorts as $number => $port) { $getbits = $this->snmpInstance->get($port); $bits = str_replace('INTEGER: ', '', $getbits); $pinsStatus = $this->_getActivePins($bits); $allPins[$number] = $pinsStatus; } return $allPins; } private function _getActivePins($bits) { $bitMapping = array( 1 => 1, 2 => 2, 3 => 4, 4 => 8, 5 => 16, 6 => 32, 7 => 64, 8 => 128 ); $pinsStatus = array(); foreach ($bitMapping as $int => $bit) { if (($bits & $bit) == $bit) { $pinsStatus[$int] = true; continue; } $pinsStatus[$int] = false; } return $pinsStatus; }}?>I have one module that receive SNMP request and send a command to relays. Also these are example scripts that use this lib:Turn on script:<?phprequire_once 'snmp_lib.php';$snmp = new snmp_lib('write');$snmp->activate($getRelayNumber);$snmp->closeSession();?>Turn off script:<?phprequire_once 'snmp_lib.php';$snmp = new snmp_lib('write');$snmp->deactivate($getRelayNumber);$snmp->closeSession();?>Script that get all ports status:<?phprequire_once 'snmp_lib.php';$snmp = new snmp_lib('read');$getActive = $snmp->getAllPortsStatus();?>