code: public static function buildKey($key)
      {
          if (is_numeric($key)) {
              return $key;
          } elseif (is_string($key)) {
              return ctype_alnum($key) && StringHelper::byteLength($key) <= 32 ? $key : md5($key);
          } elseif (is_array($key)) {
              if (count($key) == 1) {
                  return self::buildKey(reset($key));
              }
              ksort($key); // ensure order is always the same
              $isNumeric = true;
              foreach ($key as $value) {
                  if (!is_numeric($value)) {
                      $isNumeric = false;
                  }
              }
              if ($isNumeric) {
                  return implode('-', $key);
              }
          }
  
          return md5(json_encode($key, JSON_NUMERIC_CHECK));
      }
docs: Builds a normalized key from a given primary key value.
  
  @param mixed $key the key to be normalized
  @return string the generated key