greaterThanOrEqualTo($replacementDate)) { throw new \DomainException( 'Order deadline must be strictly before the replacement date' ); } } public function hasReplacement(): bool { return $this->replacementDate !== null; } public function effectiveDeadline(CarbonInterface $defaultDeadline): CarbonImmutable { return $this->orderDeadlineAt !== null ? CarbonImmutable::createFromInterface($this->orderDeadlineAt) : CarbonImmutable::createFromInterface($defaultDeadline); } public function isDeadlinePassed(CarbonInterface $now, CarbonInterface $defaultDeadline): bool { return $now->greaterThan($this->effectiveDeadline($defaultDeadline)); } }