value <= 0) { throw new \InvalidArgumentException('Page number must be greater than 0'); } } public static function of(int $value): self { return new self($value); } public static function default(): self { return new self(self::DEFAULT_PAGE); } public function value(): int { return $this->value; } public function equals(mixed $other): bool { return $other instanceof self && $this->value === $other->value; } public function __toString(): string { return (string) $this->value; } public function jsonSerialize(): int { return $this->value; } }