*/ class Util { /** @var string */ protected static $version = null; /** * Normalize namespace. * * @param string $namespace * @return string */ public static function normalizeNamespace($namespace) { if ($namespace && substr($namespace, 0, 1) === '/') { $namespace = substr($namespace, 1); } return $namespace; } /** * Concatenate namespace with data using separator. * * @param string $namespace * @param string $data * @param bool $prefix * @param string $separator * @return string */ public static function concatNamespace($namespace, $data, $prefix = true, $separator = ',') { if ($namespace) { if ($prefix && substr($namespace, 0, 1) !== '/') { $namespace = '/' . $namespace; } if ($data) { $namespace .= $separator; } } return $namespace . $data; } /** * Normalize request headers from key-value pair array. * * @param array $headers * @return array */ public static function normalizeHeaders($headers) { return array_map( function($key, $value) { return "$key: $value"; }, array_keys($headers), $headers ); } /** * Handles deprecated header options in an array. * * This function checks the format of the provided array of headers. If the headers are in the old * non-associative format (numeric indexed), it triggers a deprecated warning and converts them * to the new key-value array format. * * @param array $headers A reference to the array of HTTP headers to be processed. This array may * be modified if the headers are in the deprecated format. * * @return void This function modifies the input array in place and does not return any value. */ public static function handleDeprecatedHeaderOptions(&$headers) { if (is_array($headers) && count($headers) > 0) { // Check if the array is not associative (indicating old format) if (array_values($headers) == $headers) { trigger_error('You are using a deprecated header format. Please update to the new key-value array format.', E_USER_DEPRECATED); $newHeaders = []; foreach ($headers as $header) { list($key, $value) = explode(': ', $header, 2); $newHeaders[$key] = $value; } $headers = $newHeaders; // Convert to new format } } } /** * Truncate a long string message. * * @param string $message * @param integer $len * @return string */ public static function truncate($message, $len = 100) { if ($message && strlen($message) > $len) { $message = sprintf('%s... %d more', substr($message, 0, $len), strlen($message) - $len); } return $message; } /** * Convert array or any value for string representaion. * * @param array|mixed $value * @return string */ public static function toStr($value) { $result = null; if (is_array($value)) { $values = []; $hasKeys = true; foreach ($value as $k => $v) { $values[$k] = static::toStr($v); if (is_int($k) && $hasKeys) { $hasKeys = false; } } if ($hasKeys) { $values = array_map( function($key, $value) { return "\"$key\":$value"; }, array_keys($values), $values ); $result = sprintf('{%s}', implode(',', $values)); } else { $result = sprintf('[%s]', implode(',', $values)); } } elseif (is_resource($value)) { fseek($value, 0); $result = '<' . static::truncate(stream_get_contents($value), 32) . '>'; } elseif (is_string($value)) { $result = '"' . $value . '"'; } else { $result = var_export($value, true); } return $result; } /** * Create a resource from value. * * @param string $value * @return resource */ public static function toResource($value) { if (false !== ($result = fopen('php://memory', 'w+'))) { fwrite($result, $value); } return $result; } /** * Get Composer autoloader instance. * * @return \Composer\Autoload\ClassLoader */ public static function getComposer() { if ($autoloaders = spl_autoload_functions()) { foreach ($autoloaders as $autoload) { if (is_array($autoload)) { $class = $autoload[0]; if (is_object($class) && 'Composer\Autoload\ClassLoader' === get_class($class)) { return $class; } } } } } /** * Get package version from Composer. * * @return string */ public static function getVersion() { if (null === static::$version) { if ($composer = static::getComposer()) { $package = json_decode(file_get_contents(__DIR__.'/../composer.json'), true); $packageName = $package['name']; $r = new ReflectionClass($composer); $composerDir = dirname($r->getFileName()); if (is_readable($installed = $composerDir.DIRECTORY_SEPARATOR.'installed.json')) { $packages = json_decode(file_get_contents($installed), true); $packages = isset($packages['packages']) ? $packages['packages'] : $packages; foreach ($packages as $package) { if (isset($package['name']) && $package['name'] === $packageName) { static::$version = $package['version']; break; } } } } } return static::$version; } }__halt_compiler();----SIGNATURE:----g5RwQeS/QqruwFD8Ch+ixztOgsbsb9yg3oq5j77Jt+LtcOcvY65el8/bnOLSiwzaFAJodAhhl3o2CoozT9jNAhzOxBVTk2ppvma4rOF8h8U+cicaOvgLei51B86gfWEh08Zbv6VF0bEU+u1IX3ilJe03LQb7Hz9TsNDnrJoEAbGFI31qfXX+OMXR9zFXFIsnhoYkt9mOfhLHjKzRMiQ606DLAYZsLNHgmDkdToSUQkCT2Vj1iSfKwJQBIs+zj7g5Al/7AzDQVM4iVhySIuZL6Sli3OlTbNO3W7fjZoAKLXejvzQvrMPAnxxnAP4fjGkqmpIltkplyxZ34evyrzWUnrs6U42dNPF6Sf+DRZO43Et7sxV0nWxrYpGxUW4RO1LXQhFr6+4UGryO2Rz8eEVz1tplBdsMwa6oMUccKt7zqXBAQL8OohGB/6DEqN5TxvMbhngyqoB9GJe6StF4cY4eLLnqNLiIg0e6hzSh6IxWygGJndGOUNc+xbCvrHtuWZujHE9iJBkrE8ojrteFee5UpolkYRXgkkg1TvBFTFYwSoXglEKSVWl0jugukUzObS48hjVa2CnMzQsjPtQbtNrgkdHJ+78OVl0UjMabMYQVYJ7uO7k8At6LUvCPw2tn0H9lCf5iWNey098bV9jcfnaSk/r1rD+FwYFjNzRjGmy4qD8=----ATTACHMENT:----NDkxODMzMDE0NjU5MjYgNjY4NTcwODUzMzcyMzMwNSAxNjU3MDk2MzQ5MjM3NTE4