Eloquent\Phony\Event\EventOrderVerifier::checkInOrderSequence PHP Метод

checkInOrderSequence() публичный Метод

Checks if the supplied event sequence happened in chronological order.
public checkInOrderSequence ( mixed $events ) : EventCollection | null
$events mixed
Результат EventCollection | null The result.
    public function checkInOrderSequence($events)
    {
        if (!count($events)) {
            return null;
        }
        $isMatch = true;
        $matchingEvents = array();
        $earliestEvent = null;
        foreach ($events as $event) {
            if ($event instanceof Event) {
                if (!$earliestEvent || $event->sequenceNumber() > $earliestEvent->sequenceNumber()) {
                    $matchingEvents[] = $earliestEvent = $event;
                    continue;
                }
            } elseif ($event instanceof EventCollection) {
                if (!$event->hasEvents()) {
                    throw new InvalidArgumentException('Cannot verify event order with empty results.');
                }
                foreach ($event->allEvents() as $subEvent) {
                    if (!$earliestEvent || $subEvent->sequenceNumber() > $earliestEvent->sequenceNumber()) {
                        $matchingEvents[] = $earliestEvent = $subEvent;
                        continue 2;
                    }
                }
            } else {
                throw new InvalidArgumentException(sprintf('Cannot verify event order with supplied value %s.', $this->assertionRenderer->renderValue($event)));
            }
            $isMatch = false;
            break;
        }
        if ($isMatch) {
            return $this->assertionRecorder->createSuccess($matchingEvents);
        }
    }