protected function thisConnectionIsBetter(Connection $connection) { $noExistingConnection = !isset($this->departures[$connection->getOrigin()]); if ($connection instanceof NonTimetableConnection) { return $noExistingConnection || $this->departures[$connection->getOrigin()] < $this->departures[$connection->getDestination()] - $connection->getDuration(); } else { if ($connection instanceof TimetableConnection) { return $noExistingConnection || $this->departures[$connection->getOrigin()] < $connection->getDepartureTime(); } } throw new PlanningException("Unknown connection type " . get_class($connection)); }
protected function thisConnectionIsBetter(Connection $connection) { if (!isset($this->arrivals[$connection->getDestination()])) { return true; } else { if ($connection instanceof NonTimetableConnection) { return $this->arrivals[$connection->getDestination()] > $this->arrivals[$connection->getOrigin()] + $connection->getDuration(); } else { if ($connection instanceof TimetableConnection) { return $this->arrivals[$connection->getDestination()] >= $connection->getArrivalTime(); } } } throw new PlanningException("Unknown connection type " . get_class($connection)); }