/** * Кодирует объект в формат JSON * * @param $Value Значение, которое будет закодировано. Может быть любого типа за исключением resource. * @param int $Options Битовая маска составляемая из значений JSON_HEX_QUOT, JSON_HEX_TAG, JSON_HEX_AMP, JSON_HEX_APOS, JSON_NUMERIC_CHECK, JSON_PRETTY_PRINT, JSON_UNESCAPED_SLASHES, JSON_FORCE_OBJECT, JSON_UNESCAPED_UNICODE. * @return string * @since 1.3.5 */ function JsonEncode($Value, $Options = 0) { if (version_compare(PHP_VERSION, '5.3.0', '>=')) { return json_encode(ObjectCp1251ToUtf8($Value), $Options); } else { return json_encode(ObjectCp1251ToUtf8($Value)); } }
function ParseAnnotations($DocComment) { preg_match_all('/@([a-zA-Z0-9_-]+)\\:(.+)/', $DocComment, $parsed); $annotations = array(); foreach ($parsed[1] as $i => $Name) { $annotations[] = '"' . $Name . '": ' . $parsed[2][$i]; } $Json = '{' . implode(',', ObjectCp1251ToUtf8($annotations)) . '}'; return JsonDecode($Json); }
/** * Преобразует строки объекта или массива в кодировку UTF-8 * @param $var * @return array|string * @since 1.3.5 */ function ObjectCp1251ToUtf8(&$var) { if (is_array($var)) { foreach ($var as &$v) { $v = ObjectCp1251ToUtf8($v); } } elseif (is_object($var)) { $vars = get_object_vars($var); foreach ($vars as $f => &$v) { $var->{$f} = ObjectCp1251ToUtf8($v); } } elseif (is_string($var)) { $var = Cp1251ToUtf8($var); } return $var; }