true, default => false, }; } public function needs_new_url(): bool { return match ( $this ) { self::Replace, self::Redirect => true, default => false, }; } public function outcome(): Outcome { return match ( $this ) { self::Remove => Outcome::Removed, self::Ignore => Outcome::Ignored, default => Outcome::Resolved, }; } public function applies_to( Link $link ): bool { $is_broken = Verdict::Broken === $link->verdict; $is_moved = Verdict::Moved === $link->verdict; return match ( $this ) { self::Replace, self::Remove => $is_broken || $is_moved, self::Update => $is_moved && null !== $link->final_url, self::Redirect => $is_broken && $link->internal, self::Works => Verdict::Blocked === $link->verdict, default => true, }; } }