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();?>