$parts Части ключа в фиксированном порядке. */ public static function ofParts( array $parts ): string { $normalized = array_map( static fn( $part ): string => null === $part ? '' : (string) $part, $parts ); return self::of( implode( self::SEPARATOR, $normalized ) ); } /** * Похоже ли значение на hex-хеш SHA-256. * * Проверяется перед подстановкой в UNHEX(): в SQL не должно попасть * ничего, кроме 64 шестнадцатеричных символов. * * @param string $value Значение. */ public static function isValid( string $value ): bool { return 1 === preg_match( '/^[0-9a-f]{64}$/', $value ); } }