_sockets = new \SplObjectStorage; $this->_master = $master; $this->insert($this->_master); } /** * @return Socket */ public function getMaster() { return $this->_master; } /** * @param resource * @return Socket */ public function getClientByResource($resource) { if ($this->_sockets->contains($resource)) { return $this->_sockets[$resource]; } throw new Exception("Resource not found"); } protected function insert(Socket $socket) { $resource = $socket->getResource(); $this->_sockets[$socket] = $resource; $this->_resources[] = $resource; } /** * @return SplObjectStorage */ public function getIterator() { return $this->_sockets; } /** * @return array */ public function asArray() { return $this->_resources; } }