*/ public function toArray(): array { return array_filter( ['name' => $this->name, 'email' => $this->email, 'phone' => $this->phone], static fn(?string $value): bool => $value !== null, ); } public static function normalizeEmail(?string $email): ?string { $email = trim((string) $email); if ( $email === '' || strlen($email) > self::EMAIL_MAX_LENGTH || filter_var($email, FILTER_VALIDATE_EMAIL) === false ) { return null; } return $email; } public static function normalizePhone(?string $phone): ?string { $digits = preg_replace('/[^0-9]/', '', (string) $phone) ?? ''; if ($digits === '' || strlen($digits) + 1 > self::PHONE_MAX_LENGTH) { return null; } return '+' . $digits; } private static function normalizeName(?string $name): ?string { $name = ReceiptText::validate((string) $name, self::NAME_MAX_LENGTH); return $name === '' ? null : $name; } }