Пример #1
0
 /**
  * @return array
  */
 public function getNetworks()
 {
     $span = $this->getSpanNetwork();
     $networks = array();
     if ($span->getFirstIP()->inAddr() === $this->firstIP->inAddr() && $span->getLastIP()->inAddr() === $this->lastIP->inAddr()) {
         $networks = array($span);
     } else {
         if ($span->getFirstIP()->inAddr() !== $this->firstIP->inAddr()) {
             $excluded = $span->exclude($this->firstIP->prev());
             /**
              * @var Network $network
              */
             foreach ($excluded as $network) {
                 if (strcmp($network->getFirstIP()->inAddr(), $this->firstIP->inAddr()) >= 0) {
                     $networks[] = $network;
                 }
             }
         }
         if ($span->getLastIP()->inAddr() !== $this->lastIP->inAddr()) {
             if (!$networks) {
                 $excluded = $span->exclude($this->lastIP->next());
             } else {
                 $excluded = array_pop($networks);
                 $excluded = $excluded->exclude($this->lastIP->next());
             }
             foreach ($excluded as $network) {
                 $networks[] = $network;
                 if ($network->getLastIP()->inAddr() === $this->lastIP->inAddr()) {
                     break;
                 }
             }
         }
     }
     return $networks;
 }