Page MenuHomeSealhub

No OneTemporary

This file is larger than 256 KB, so syntax highlighting was skipped.
diff --git a/resources/php_compat_info.json b/resources/php_compat_info.json
index 8212da4b..ad4965bb 100644
--- a/resources/php_compat_info.json
+++ b/resources/php_compat_info.json
@@ -1,6218 +1,12296 @@
{
"@generated" : true,
"params" : {
"array_keys" : [
"4.0.0",
"4.0.0",
"5.0.0"
],
"array_slice" : [
"4.0.0",
"4.0.0",
"4.0.0",
"5.0.2"
],
"assert" : [
"4.0.0",
"5.4.8"
],
"class_exists" : [
"4.0.0",
"5.0.0"
],
"clearstatcache" : [
"5.3.0",
"5.3.0"
],
"copy" : [
"4.0.0",
"4.0.0",
"5.3.0"
],
"fgetss" : [
"5.0.0",
"4.0.0",
"5.0.0"
],
"file" : [
"4.0.0",
"4.0.0",
"5.0.0"
],
"file_get_contents" : [
"4.3.0",
"4.3.0",
"4.3.0",
"5.1.0",
"5.1.0"
],
"get_browser" : [
"4.0.0",
"4.3.2"
],
"getopt" : [
"4.3.0",
"5.3.0"
],
"gettimeofday" : [
"5.1.0"
],
"htmlentities" : [
"4.0.0",
"4.0.3",
"4.1.0",
"5.2.3"
],
"htmlspecialchars" : [
"4.0.0",
"4.0.0",
"4.1.0",
"5.2.3"
],
"is_a" : [
"4.2.0",
"4.2.0",
"5.3.9"
],
"json_decode" : [
"5.2.0",
"5.2.0",
"5.3.0",
"5.4.0"
],
"md5" : [
"4.0.0",
"5.0.0"
],
"md5_file" : [
"4.2.0",
"5.0.0"
],
"memory_get_usage" : [
"5.2.0"
],
"microtime" : [
"5.0.0"
],
"mkdir" : [
"4.0.0",
"4.0.0",
"5.0.0",
"5.0.0"
],
"nl2br" : [
"4.0.0",
"5.3.0"
],
"opendir" : [
"4.0.0",
"5.3.0"
],
"parse_url" : [
"4.0.0",
"5.1.2"
],
"preg_replace" : [
"4.0.0",
"4.0.0",
"4.0.0",
"4.0.1",
"5.1.0"
],
"preg_replace_callback" : [
"4.0.5",
"4.0.5",
"4.0.5",
"4.0.5",
"5.1.0"
],
"sha1" : [
"4.3.0",
"5.0.0"
],
"sha1_file" : [
"4.3.0",
"5.0.0"
],
"str_replace" : [
"4.0.0",
"4.0.0",
"4.0.0",
"5.0.0"
],
"stream_copy_to_stream" : [
"5.0.0",
"5.0.0",
"5.0.0",
"5.1.0"
],
"stream_get_contents" : [
"5.0.0",
"5.0.0",
"5.1.0"
],
"substr_count" : [
"4.0.0",
"4.0.0",
"5.1.0",
"5.1.0"
]
},
"functions" : {
"_" : {
"min" : "4.0.0",
"max" : null
},
"abs" : {
"min" : "4.0.0",
"max" : null
},
"acos" : {
"min" : "4.0.0",
"max" : null
},
"acosh" : {
"min" : "4.0.7",
"max" : null
},
"addcslashes" : {
"min" : "4.0.0",
"max" : null
},
"addslashes" : {
"min" : "4.0.0",
"max" : null
},
"apc_add" : {
"min" : "4.3.0",
"max" : null
},
"apc_bin_dump" : {
"min" : "5.1.0",
"max" : null
},
"apc_bin_dumpfile" : {
"min" : "5.1.0",
"max" : null
},
"apc_bin_load" : {
"min" : "5.1.0",
"max" : null
},
"apc_bin_loadfile" : {
"min" : "5.1.0",
"max" : null
},
"apc_cache_info" : {
"min" : "4.0.0",
"max" : null
},
"apc_cas" : {
"min" : "5.1.0",
"max" : null
},
"apc_clear_cache" : {
"min" : "4.0.0",
"max" : null
},
"apc_compile_file" : {
"min" : "4.3.0",
"max" : null
},
"apc_dec" : {
"min" : "5.1.0",
"max" : null
},
"apc_define_constants" : {
"min" : "4.3.0",
"max" : null
},
"apc_delete" : {
"min" : "4.3.0",
"max" : null
},
"apc_delete_file" : {
"min" : "5.1.0",
"max" : null
},
"apc_exists" : {
"min" : "5.1.0",
"max" : null
},
"apc_fetch" : {
"min" : "4.3.0",
"max" : null
},
"apc_inc" : {
"min" : "5.1.0",
"max" : null
},
"apc_load_constants" : {
"min" : "4.3.0",
"max" : null
},
"apc_sma_info" : {
"min" : "4.0.0",
"max" : null
},
"apc_store" : {
"min" : "4.3.0",
"max" : null
},
"array_change_key_case" : {
"min" : "4.2.0",
"max" : null
},
"array_chunk" : {
"min" : "4.2.0",
"max" : null
},
"array_column" : {
"min" : "5.5.0",
"max" : null
},
"array_combine" : {
"min" : "5.0.0",
"max" : null
},
"array_count_values" : {
"min" : "4.0.0",
"max" : null
},
"array_diff" : {
"min" : "4.0.1",
"max" : null
},
"array_diff_assoc" : {
"min" : "4.3.0",
"max" : null
},
"array_diff_key" : {
"min" : "5.1.0",
"max" : null
},
"array_diff_uassoc" : {
"min" : "5.0.0",
"max" : null
},
"array_diff_ukey" : {
"min" : "5.1.0",
"max" : null
},
"array_fill" : {
"min" : "4.2.0",
"max" : null
},
"array_fill_keys" : {
"min" : "5.2.0",
"max" : null
},
"array_filter" : {
"min" : "4.0.6",
"max" : null
},
"array_flip" : {
"min" : "4.0.0",
"max" : null
},
"array_intersect" : {
"min" : "4.0.1",
"max" : null
},
"array_intersect_assoc" : {
"min" : "4.3.0",
"max" : null
},
"array_intersect_key" : {
"min" : "5.1.0",
"max" : null
},
"array_intersect_uassoc" : {
"min" : "5.0.0",
"max" : null
},
"array_intersect_ukey" : {
"min" : "5.1.0",
"max" : null
},
"array_key_exists" : {
"min" : "4.0.7",
"max" : null
},
"array_keys" : {
"min" : "4.0.0",
"max" : null
},
"array_map" : {
"min" : "4.0.6",
"max" : null
},
"array_merge" : {
"min" : "4.0.0",
"max" : null
},
"array_merge_recursive" : {
"min" : "4.0.1",
"max" : null
},
"array_multisort" : {
"min" : "4.0.0",
"max" : null
},
"array_pad" : {
"min" : "4.0.0",
"max" : null
},
"array_pop" : {
"min" : "4.0.0",
"max" : null
},
"array_product" : {
"min" : "5.1.0",
"max" : null
},
"array_push" : {
"min" : "4.0.0",
"max" : null
},
"array_rand" : {
"min" : "4.0.0",
"max" : null
},
"array_reduce" : {
"min" : "4.0.5",
"max" : null
},
"array_replace" : {
"min" : "5.3.0",
"max" : null
},
"array_replace_recursive" : {
"min" : "5.3.0",
"max" : null
},
"array_reverse" : {
"min" : "4.0.0",
"max" : null
},
"array_search" : {
"min" : "4.0.5",
"max" : null
},
"array_shift" : {
"min" : "4.0.0",
"max" : null
},
"array_slice" : {
"min" : "4.0.0",
"max" : null
},
"array_splice" : {
"min" : "4.0.0",
"max" : null
},
"array_sum" : {
"min" : "4.0.4",
"max" : null
},
"array_udiff" : {
"min" : "5.0.0",
"max" : null
},
"array_udiff_assoc" : {
"min" : "4.0.0",
"max" : null
},
"array_udiff_uassoc" : {
"min" : "4.0.0",
"max" : null
},
"array_uintersect" : {
"min" : "4.0.0",
"max" : null
},
"array_uintersect_assoc" : {
"min" : "4.0.0",
"max" : null
},
"array_uintersect_uassoc" : {
"min" : "4.0.0",
"max" : null
},
"array_unique" : {
"min" : "4.0.1",
"max" : null
},
"array_unshift" : {
"min" : "4.0.0",
"max" : null
},
"array_values" : {
"min" : "4.0.0",
"max" : null
},
"array_walk" : {
"min" : "4.0.0",
"max" : null
},
"array_walk_recursive" : {
"min" : "5.0.0",
"max" : null
},
"arsort" : {
"min" : "4.0.0",
"max" : null
},
"asin" : {
"min" : "4.0.0",
"max" : null
},
"asinh" : {
"min" : "4.0.7",
"max" : null
},
"asort" : {
"min" : "4.0.0",
"max" : null
},
"assert" : {
"min" : "4.0.0",
"max" : null
},
"assert_options" : {
"min" : "4.0.0",
"max" : null
},
"atan" : {
"min" : "4.0.0",
"max" : null
},
"atan2" : {
"min" : "4.0.0",
"max" : null
},
"atanh" : {
"min" : "4.0.7",
"max" : null
},
"base64_decode" : {
"min" : "4.0.0",
"max" : null
},
"base64_encode" : {
"min" : "4.0.0",
"max" : null
},
"base_convert" : {
"min" : "4.0.0",
"max" : null
},
"basename" : {
"min" : "4.0.0",
"max" : null
},
"bin2hex" : {
"min" : "4.0.0",
"max" : null
},
"bind_textdomain_codeset" : {
"min" : "4.2.0",
"max" : null
},
"bindec" : {
"min" : "4.0.0",
"max" : null
},
"bindtextdomain" : {
"min" : "4.0.0",
"max" : null
},
"boolval" : {
"min" : "5.5.0",
"max" : null
},
"call_user_func" : {
"min" : "4.0.0",
"max" : null
},
"call_user_func_array" : {
"min" : "4.0.4",
"max" : null
},
"call_user_method" : {
"min" : "4.0.0",
"max" : null
},
"call_user_method_array" : {
"min" : "4.0.5",
"max" : null
},
"ceil" : {
"min" : "4.0.0",
"max" : null
},
"chdir" : {
"min" : "4.0.0",
"max" : null
},
"checkdate" : {
"min" : "4.0.0",
"max" : null
},
"checkdnsrr" : {
"min" : "4.0.0",
"max" : null
},
"chgrp" : {
"min" : "4.0.0",
"max" : null
},
"chmod" : {
"min" : "4.0.0",
"max" : null
},
"chop" : {
"min" : "4.0.0",
"max" : null
},
"chown" : {
"min" : "4.0.0",
"max" : null
},
"chr" : {
"min" : "4.0.0",
"max" : null
},
"chroot" : {
"min" : "4.0.5",
"max" : null
},
"chunk_split" : {
"min" : "4.0.0",
"max" : null
},
"class_alias" : {
"min" : "5.3.0",
"max" : null
},
"class_exists" : {
"min" : "4.0.0",
"max" : null
},
"class_implements" : {
"min" : "5.1.0",
"max" : null
},
"class_parents" : {
"min" : "5.1.0",
"max" : null
},
"class_uses" : {
"min" : "5.4.0",
"max" : null
},
"clearstatcache" : {
"min" : "4.0.0",
"max" : null
},
"cli_get_process_title" : {
"min" : "5.5.0",
"max" : null
},
"cli_set_process_title" : {
"min" : "5.5.0",
"max" : null
},
"closedir" : {
"min" : "4.0.0",
"max" : null
},
"closelog" : {
"min" : "4.0.0",
"max" : null
},
"collator_asort" : {
"min" : "5.2.0",
"max" : null
},
"collator_compare" : {
"min" : "5.2.0",
"max" : null
},
"collator_create" : {
"min" : "5.2.0",
"max" : null
},
"collator_get_attribute" : {
"min" : "5.2.0",
"max" : null
},
"collator_get_error_code" : {
"min" : "5.2.0",
"max" : null
},
"collator_get_error_message" : {
"min" : "5.2.0",
"max" : null
},
"collator_get_locale" : {
"min" : "5.2.0",
"max" : null
},
"collator_get_sort_key" : {
"min" : "5.2.4",
"max" : null
},
"collator_get_strength" : {
"min" : "5.2.0",
"max" : null
},
"collator_set_attribute" : {
"min" : "5.2.0",
"max" : null
},
"collator_set_strength" : {
"min" : "5.2.0",
"max" : null
},
"collator_sort" : {
"min" : "5.2.0",
"max" : null
},
"collator_sort_with_sort_keys" : {
"min" : "5.2.0",
"max" : null
},
"compact" : {
"min" : "4.0.0",
"max" : null
},
"connection_aborted" : {
"min" : "4.0.0",
"max" : null
},
"connection_status" : {
"min" : "4.0.0",
"max" : null
},
"connection_timeout" : {
"min" : "4.0.0",
"max" : "4.0.4"
},
"constant" : {
"min" : "4.0.4",
"max" : null
},
"convert_cyr_string" : {
"min" : "4.0.0",
"max" : null
},
"convert_uudecode" : {
"min" : "5.0.0",
"max" : null
},
"convert_uuencode" : {
"min" : "5.0.0",
"max" : null
},
"copy" : {
"min" : "4.0.0",
"max" : null
},
"cos" : {
"min" : "4.0.0",
"max" : null
},
"cosh" : {
"min" : "4.0.7",
"max" : null
},
"count" : {
"min" : "4.0.0",
"max" : null
},
"count_chars" : {
"min" : "4.0.0",
"max" : null
},
"crc32" : {
"min" : "4.0.1",
"max" : null
},
"create_function" : {
"min" : "4.0.1",
"max" : null
},
"crypt" : {
"min" : "4.0.0",
"max" : null
},
"curl_close" : {
"min" : "4.0.2",
"max" : null
},
"curl_copy_handle" : {
"min" : "5.0.0",
"max" : null
},
"curl_errno" : {
"min" : "4.0.3",
"max" : null
},
"curl_error" : {
"min" : "4.0.3",
"max" : null
},
"curl_escape" : {
"min" : "5.5.0",
"max" : null
},
"curl_exec" : {
"min" : "4.0.2",
"max" : null
},
"curl_file_create" : {
"min" : "5.5.0",
"max" : null
},
"curl_getinfo" : {
"min" : "4.0.4",
"max" : null
},
"curl_init" : {
"min" : "4.0.2",
"max" : null
},
"curl_multi_add_handle" : {
"min" : "5.0.0",
"max" : null
},
"curl_multi_close" : {
"min" : "5.0.0",
"max" : null
},
"curl_multi_exec" : {
"min" : "5.0.0",
"max" : null
},
"curl_multi_getcontent" : {
"min" : "5.0.0",
"max" : null
},
"curl_multi_info_read" : {
"min" : "5.0.0",
"max" : null
},
"curl_multi_init" : {
"min" : "5.0.0",
"max" : null
},
"curl_multi_remove_handle" : {
"min" : "5.0.0",
"max" : null
},
"curl_multi_select" : {
"min" : "5.0.0",
"max" : null
},
"curl_multi_setopt" : {
"min" : "5.5.0",
"max" : null
},
"curl_multi_strerror" : {
"min" : "5.5.0",
"max" : null
},
"curl_pause" : {
"min" : "5.5.0",
"max" : null
},
"curl_reset" : {
"min" : "5.5.0",
"max" : null
},
"curl_setopt" : {
"min" : "4.0.2",
"max" : null
},
"curl_setopt_array" : {
"min" : "5.1.3",
"max" : null
},
"curl_share_close" : {
"min" : "5.5.0",
"max" : null
},
"curl_share_init" : {
"min" : "5.5.0",
"max" : null
},
"curl_share_setopt" : {
"min" : "5.5.0",
"max" : null
},
"curl_strerror" : {
"min" : "5.5.0",
"max" : null
},
"curl_unescape" : {
"min" : "5.5.0",
"max" : null
},
"curl_version" : {
"min" : "4.0.2",
"max" : null
},
"current" : {
"min" : "4.0.0",
"max" : null
},
"date" : {
"min" : "4.0.0",
"max" : null
},
"date_add" : {
"min" : "5.3.0",
"max" : null
},
"date_create" : {
"min" : "5.2.0",
"max" : null
},
"date_create_from_format" : {
"min" : "5.3.0",
"max" : null
},
"date_create_immutable" : {
"min" : "5.5.0",
"max" : null
},
"date_create_immutable_from_format" : {
"min" : "5.5.0",
"max" : null
},
"date_date_set" : {
"min" : "5.2.0",
"max" : null
},
"date_default_timezone_get" : {
"min" : "5.1.0",
"max" : null
},
"date_default_timezone_set" : {
"min" : "5.1.0",
"max" : null
},
"date_diff" : {
"min" : "5.3.0",
"max" : null
},
"date_format" : {
"min" : "5.2.0",
"max" : null
},
"date_get_last_errors" : {
"min" : "5.3.0",
"max" : null
},
"date_interval_create_from_date_string" : {
"min" : "5.3.0",
"max" : null
},
"date_interval_format" : {
"min" : "5.3.0",
"max" : null
},
"date_isodate_set" : {
"min" : "5.2.0",
"max" : null
},
"date_modify" : {
"min" : "5.2.0",
"max" : null
},
"date_offset_get" : {
"min" : "5.2.0",
"max" : null
},
"date_parse" : {
"min" : "5.2.0",
"max" : null
},
"date_parse_from_format" : {
"min" : "5.3.0",
"max" : null
},
"date_sub" : {
"min" : "5.3.0",
"max" : null
},
"date_sun_info" : {
"min" : "5.1.2",
"max" : null
},
"date_sunrise" : {
"min" : "5.0.0",
"max" : null
},
"date_sunset" : {
"min" : "5.0.0",
"max" : null
},
"date_time_set" : {
"min" : "5.2.0",
"max" : null
},
"date_timestamp_get" : {
"min" : "5.3.0",
"max" : null
},
"date_timestamp_set" : {
"min" : "5.3.0",
"max" : null
},
"date_timezone_get" : {
"min" : "5.2.0",
"max" : null
},
"date_timezone_set" : {
"min" : "5.2.0",
"max" : null
},
"datefmt_create" : {
"min" : "5.2.4",
"max" : null
},
"datefmt_format" : {
"min" : "5.2.4",
"max" : null
},
"datefmt_format_object" : {
"min" : "5.5.0",
"max" : null
},
"datefmt_get_calendar" : {
"min" : "5.2.4",
"max" : null
},
"datefmt_get_calendar_object" : {
"min" : "5.5.0",
"max" : null
},
"datefmt_get_datetype" : {
"min" : "5.2.4",
"max" : null
},
"datefmt_get_error_code" : {
"min" : "5.2.4",
"max" : null
},
"datefmt_get_error_message" : {
"min" : "5.2.4",
"max" : null
},
"datefmt_get_locale" : {
"min" : "5.2.4",
"max" : null
},
"datefmt_get_pattern" : {
"min" : "5.2.4",
"max" : null
},
"datefmt_get_timetype" : {
"min" : "5.2.4",
"max" : null
},
"datefmt_get_timezone" : {
"min" : "5.5.0",
"max" : null
},
"datefmt_get_timezone_id" : {
"min" : "5.2.4",
"max" : null
},
"datefmt_is_lenient" : {
"min" : "5.2.4",
"max" : null
},
"datefmt_localtime" : {
"min" : "5.2.4",
"max" : null
},
"datefmt_parse" : {
"min" : "5.2.4",
"max" : null
},
"datefmt_set_calendar" : {
"min" : "5.2.4",
"max" : null
},
"datefmt_set_lenient" : {
"min" : "5.2.4",
"max" : null
},
"datefmt_set_pattern" : {
"min" : "5.2.4",
"max" : null
},
"datefmt_set_timezone" : {
"min" : "5.5.0",
"max" : null
},
"datefmt_set_timezone_id" : {
"min" : "5.2.4",
"max" : null
},
"dcgettext" : {
"min" : "4.0.0",
"max" : null
},
"dcngettext" : {
"min" : "4.2.0",
"max" : null
},
"debug_backtrace" : {
"min" : "4.3.0",
"max" : null
},
"debug_print_backtrace" : {
"min" : "5.0.0",
"max" : null
},
"debug_zval_dump" : {
"min" : "4.2.0",
"max" : null
},
"decbin" : {
"min" : "4.0.0",
"max" : null
},
"dechex" : {
"min" : "4.0.0",
"max" : null
},
"decoct" : {
"min" : "4.0.0",
"max" : null
},
"define" : {
"min" : "4.0.0",
"max" : null
},
"define_syslog_variables" : {
"min" : "4.0.0",
"max" : "5.3.28"
},
"defined" : {
"min" : "4.0.0",
"max" : null
},
"deg2rad" : {
"min" : "4.0.0",
"max" : null
},
"dgettext" : {
"min" : "4.0.0",
"max" : null
},
"dir" : {
"min" : "4.0.0",
"max" : null
},
"dirname" : {
"min" : "4.0.0",
"max" : null
},
"disk_free_space" : {
"min" : "4.1.0",
"max" : null
},
"disk_total_space" : {
"min" : "4.0.0",
"max" : null
},
"diskfreespace" : {
"min" : "4.1.0",
"max" : null
},
"dl" : {
"min" : "4.0.0",
"max" : null
},
"dngettext" : {
"min" : "4.2.0",
"max" : null
},
"dns_check_record" : {
"min" : "5.0.0",
"max" : null
},
"dns_get_mx" : {
"min" : "5.0.0",
"max" : null
},
"dns_get_record" : {
"min" : "5.0.0",
"max" : null
},
"doubleval" : {
"min" : "4.0.0",
"max" : null
},
"each" : {
"min" : "4.0.0",
"max" : null
},
"empty" : {
"min" : "4.0.0",
"max" : null
},
"end" : {
"min" : "4.0.0",
"max" : null
},
"error_get_last" : {
"min" : "5.2.0",
"max" : null
},
"error_log" : {
"min" : "4.0.0",
"max" : null
},
"error_reporting" : {
"min" : "4.0.0",
"max" : null
},
"escapeshellarg" : {
"min" : "4.0.3",
"max" : null
},
"escapeshellcmd" : {
"min" : "4.0.0",
"max" : null
},
"exec" : {
"min" : "4.0.0",
"max" : null
},
"exp" : {
"min" : "4.0.0",
"max" : null
},
"explode" : {
"min" : "4.0.0",
"max" : null
},
"expm1" : {
"min" : "4.0.7",
"max" : null
},
"extension_loaded" : {
"min" : "4.0.0",
"max" : null
},
"extract" : {
"min" : "4.0.0",
"max" : null
},
"ezmlm_hash" : {
"min" : "4.0.2",
"max" : null
},
"fclose" : {
"min" : "4.0.0",
"max" : null
},
"feof" : {
"min" : "4.0.0",
"max" : null
},
"fflush" : {
"min" : "4.0.1",
"max" : null
},
"fgetc" : {
"min" : "4.0.0",
"max" : null
},
"fgetcsv" : {
"min" : "4.0.0",
"max" : null
},
"fgets" : {
"min" : "4.0.0",
"max" : null
},
"fgetss" : {
"min" : "4.0.0",
"max" : null
},
"file" : {
"min" : "4.0.0",
"max" : null
},
"file_exists" : {
"min" : "4.0.0",
"max" : null
},
"file_get_contents" : {
"min" : "4.3.0",
"max" : null
},
"file_put_contents" : {
"min" : "5.0.0",
"max" : null
},
"fileatime" : {
"min" : "4.0.0",
"max" : null
},
"filectime" : {
"min" : "4.0.0",
"max" : null
},
"filegroup" : {
"min" : "4.0.0",
"max" : null
},
"fileinode" : {
"min" : "4.0.0",
"max" : null
},
"filemtime" : {
"min" : "4.0.0",
"max" : null
},
"fileowner" : {
"min" : "4.0.0",
"max" : null
},
"fileperms" : {
"min" : "4.0.0",
"max" : null
},
"filesize" : {
"min" : "4.0.0",
"max" : null
},
"filetype" : {
"min" : "4.0.0",
"max" : null
},
"finfo_buffer" : {
"min" : "4.0.0",
"max" : null
},
"finfo_close" : {
"min" : "4.0.0",
"max" : null
},
"finfo_file" : {
"min" : "4.0.0",
"max" : null
},
"finfo_open" : {
"min" : "4.0.0",
"max" : null
},
"finfo_set_flags" : {
"min" : "4.0.0",
"max" : null
},
"floatval" : {
"min" : "4.2.0",
"max" : null
},
"flock" : {
"min" : "4.0.0",
"max" : null
},
"floor" : {
"min" : "4.0.0",
"max" : null
},
"flush" : {
"min" : "4.0.0",
"max" : null
},
"fmod" : {
"min" : "4.2.0",
"max" : null
},
"fnmatch" : {
"min" : "4.3.0",
"max" : null
},
"fopen" : {
"min" : "4.0.0",
"max" : null
},
"forward_static_call" : {
"min" : "5.3.0",
"max" : null
},
"forward_static_call_array" : {
"min" : "5.3.0",
"max" : null
},
"fpassthru" : {
"min" : "4.0.0",
"max" : null
},
"fprintf" : {
"min" : "5.0.0",
"max" : null
},
"fputcsv" : {
"min" : "5.1.0",
"max" : null
},
"fputs" : {
"min" : "4.0.0",
"max" : null
},
"fread" : {
"min" : "4.0.0",
"max" : null
},
"fscanf" : {
"min" : "4.0.1",
"max" : null
},
"fseek" : {
"min" : "4.0.0",
"max" : null
},
"fsockopen" : {
"min" : "4.0.0",
"max" : null
},
"fstat" : {
"min" : "4.0.0",
"max" : null
},
"ftell" : {
"min" : "4.0.0",
"max" : null
},
"ftok" : {
"min" : "4.2.0",
"max" : null
},
"ftruncate" : {
"min" : "4.0.0",
"max" : null
},
"func_get_arg" : {
"min" : "4.0.0",
"max" : null
},
"func_get_args" : {
"min" : "4.0.0",
"max" : null
},
"func_num_args" : {
"min" : "4.0.0",
"max" : null
},
"function_exists" : {
"min" : "4.0.0",
"max" : null
},
"fwrite" : {
"min" : "4.0.0",
"max" : null
},
"gc_collect_cycles" : {
"min" : "5.3.0",
"max" : null
},
"gc_disable" : {
"min" : "5.3.0",
"max" : null
},
"gc_enable" : {
"min" : "5.3.0",
"max" : null
},
"gc_enabled" : {
"min" : "5.3.0",
"max" : null
},
"gd_info" : {
"min" : "4.3.0",
"max" : null
},
"get_browser" : {
"min" : "4.0.0",
"max" : null
},
"get_called_class" : {
"min" : "5.3.0",
"max" : null
},
"get_cfg_var" : {
"min" : "4.0.0",
"max" : null
},
"get_class" : {
"min" : "4.0.0",
"max" : null
},
"get_class_methods" : {
"min" : "4.0.0",
"max" : null
},
"get_class_vars" : {
"min" : "4.0.0",
"max" : null
},
"get_current_user" : {
"min" : "4.0.0",
"max" : null
},
"get_declared_classes" : {
"min" : "4.0.0",
"max" : null
},
"get_declared_interfaces" : {
"min" : "5.0.0",
"max" : null
},
"get_declared_traits" : {
"min" : "5.4.0",
"max" : null
},
"get_defined_constants" : {
"min" : "4.0.7",
"max" : null
},
"get_defined_functions" : {
"min" : "4.0.4",
"max" : null
},
"get_defined_vars" : {
"min" : "4.0.4",
"max" : null
},
"get_extension_funcs" : {
"min" : "4.0.0",
"max" : null
},
"get_headers" : {
"min" : "5.0.0",
"max" : null
},
"get_html_translation_table" : {
"min" : "4.0.0",
"max" : null
},
"get_include_path" : {
"min" : "4.3.0",
"max" : null
},
"get_included_files" : {
"min" : "4.0.0",
"max" : null
},
"get_loaded_extensions" : {
"min" : "4.0.0",
"max" : null
},
"get_magic_quotes_gpc" : {
"min" : "4.0.0",
"max" : null
},
"get_magic_quotes_runtime" : {
"min" : "4.0.0",
"max" : null
},
"get_meta_tags" : {
"min" : "4.0.0",
"max" : null
},
"get_object_vars" : {
"min" : "4.0.0",
"max" : null
},
"get_parent_class" : {
"min" : "4.0.0",
"max" : null
},
"get_required_files" : {
"min" : "4.0.0",
"max" : null
},
"get_resource_type" : {
"min" : "4.0.2",
"max" : null
},
"getcwd" : {
"min" : "4.0.0",
"max" : null
},
"getdate" : {
"min" : "4.0.0",
"max" : null
},
"getenv" : {
"min" : "4.0.0",
"max" : null
},
"gethostbyaddr" : {
"min" : "4.0.0",
"max" : null
},
"gethostbyname" : {
"min" : "4.0.0",
"max" : null
},
"gethostbynamel" : {
"min" : "4.0.0",
"max" : null
},
"gethostname" : {
"min" : "5.3.0",
"max" : null
},
"getimagesize" : {
"min" : "4.0.0",
"max" : null
},
"getimagesizefromstring" : {
"min" : "5.4.0",
"max" : null
},
"getlastmod" : {
"min" : "4.0.0",
"max" : null
},
"getmxrr" : {
"min" : "4.0.0",
"max" : null
},
"getmygid" : {
"min" : "4.0.7",
"max" : null
},
"getmyinode" : {
"min" : "4.0.0",
"max" : null
},
"getmypid" : {
"min" : "4.0.0",
"max" : null
},
"getmyuid" : {
"min" : "4.0.0",
"max" : null
},
"getopt" : {
"min" : "4.3.0",
"max" : null
},
"getprotobyname" : {
"min" : "4.0.0",
"max" : null
},
"getprotobynumber" : {
"min" : "4.0.0",
"max" : null
},
"getrandmax" : {
"min" : "4.0.0",
"max" : null
},
"getrusage" : {
"min" : "4.0.0",
"max" : null
},
"getservbyname" : {
"min" : "4.0.0",
"max" : null
},
"getservbyport" : {
"min" : "4.0.0",
"max" : null
},
"gettext" : {
"min" : "4.0.0",
"max" : null
},
"gettimeofday" : {
"min" : "4.0.0",
"max" : null
},
"gettype" : {
"min" : "4.0.0",
"max" : null
},
"glob" : {
"min" : "4.3.0",
"max" : null
},
"gmdate" : {
"min" : "4.0.0",
"max" : null
},
"gmmktime" : {
"min" : "4.0.0",
"max" : null
},
"gmstrftime" : {
"min" : "4.0.0",
"max" : null
},
"grapheme_extract" : {
"min" : "5.2.4",
"max" : null
},
"grapheme_stripos" : {
"min" : "5.2.4",
"max" : null
},
"grapheme_stristr" : {
"min" : "5.2.4",
"max" : null
},
"grapheme_strlen" : {
"min" : "5.2.4",
"max" : null
},
"grapheme_strpos" : {
"min" : "5.2.4",
"max" : null
},
"grapheme_strripos" : {
"min" : "5.2.4",
"max" : null
},
"grapheme_strrpos" : {
"min" : "5.2.4",
"max" : null
},
"grapheme_strstr" : {
"min" : "5.2.4",
"max" : null
},
"grapheme_substr" : {
"min" : "5.2.4",
"max" : null
},
"header" : {
"min" : "4.0.0",
"max" : null
},
"header_register_callback" : {
"min" : "5.4.0",
"max" : null
},
"header_remove" : {
"min" : "5.3.0",
"max" : null
},
"headers_list" : {
"min" : "5.0.0",
"max" : null
},
"headers_sent" : {
"min" : "4.0.0",
"max" : null
},
"hebrev" : {
"min" : "4.0.0",
"max" : null
},
"hebrevc" : {
"min" : "4.0.0",
"max" : null
},
"hex2bin" : {
"min" : "5.4.0",
"max" : null
},
"hexdec" : {
"min" : "4.0.0",
"max" : null
},
"highlight_file" : {
"min" : "4.0.0",
"max" : null
},
"highlight_string" : {
"min" : "4.0.0",
"max" : null
},
"html_entity_decode" : {
"min" : "4.3.0",
"max" : null
},
"htmlentities" : {
"min" : "4.0.0",
"max" : null
},
"htmlspecialchars" : {
"min" : "4.0.0",
"max" : null
},
"htmlspecialchars_decode" : {
"min" : "5.1.0",
"max" : null
},
"http_build_query" : {
"min" : "4.0.0",
"max" : null
},
"http_response_code" : {
"min" : "5.4.0",
"max" : null
},
"hypot" : {
"min" : "4.0.7",
"max" : null
},
"idate" : {
"min" : "5.0.0",
"max" : null
},
"idn_to_ascii" : {
"min" : "5.2.4",
"max" : null
},
"idn_to_utf8" : {
"min" : "5.2.4",
"max" : null
},
"ignore_user_abort" : {
"min" : "4.0.0",
"max" : null
},
"image2wbmp" : {
"min" : "4.0.5",
"max" : null
},
"image_type_to_extension" : {
"min" : "4.0.0",
"max" : null
},
"image_type_to_mime_type" : {
"min" : "4.0.0",
"max" : null
},
"imageaffine" : {
"min" : "5.5.0",
"max" : null
},
"imageaffinematrixconcat" : {
"min" : "5.5.0",
"max" : null
},
"imageaffinematrixget" : {
"min" : "5.5.0",
"max" : null
},
"imagealphablending" : {
"min" : "4.0.6",
"max" : null
},
"imageantialias" : {
"min" : "4.3.2",
"max" : null
},
"imagearc" : {
"min" : "4.0.0",
"max" : null
},
"imagechar" : {
"min" : "4.0.0",
"max" : null
},
"imagecharup" : {
"min" : "4.0.0",
"max" : null
},
"imagecolorallocate" : {
"min" : "4.0.0",
"max" : null
},
"imagecolorallocatealpha" : {
"min" : "4.3.2",
"max" : null
},
"imagecolorat" : {
"min" : "4.0.0",
"max" : null
},
"imagecolorclosest" : {
"min" : "4.0.0",
"max" : null
},
"imagecolorclosestalpha" : {
"min" : "4.0.6",
"max" : null
},
"imagecolorclosesthwb" : {
"min" : "4.0.1",
"max" : null
},
"imagecolordeallocate" : {
"min" : "4.0.0",
"max" : null
},
"imagecolorexact" : {
"min" : "4.0.0",
"max" : null
},
"imagecolorexactalpha" : {
"min" : "4.0.6",
"max" : null
},
"imagecolormatch" : {
"min" : "4.3.0",
"max" : null
},
"imagecolorresolve" : {
"min" : "4.0.0",
"max" : null
},
"imagecolorresolvealpha" : {
"min" : "4.0.6",
"max" : null
},
"imagecolorset" : {
"min" : "4.0.0",
"max" : null
},
"imagecolorsforindex" : {
"min" : "4.0.0",
"max" : null
},
"imagecolorstotal" : {
"min" : "4.0.0",
"max" : null
},
"imagecolortransparent" : {
"min" : "4.0.0",
"max" : null
},
"imageconvolution" : {
"min" : "5.1.0",
"max" : null
},
"imagecopy" : {
"min" : "4.0.0",
"max" : null
},
"imagecopymerge" : {
"min" : "4.0.1",
"max" : null
},
"imagecopymergegray" : {
"min" : "4.0.6",
"max" : null
},
"imagecopyresampled" : {
"min" : "4.0.6",
"max" : null
},
"imagecopyresized" : {
"min" : "4.0.0",
"max" : null
},
"imagecreate" : {
"min" : "4.0.0",
"max" : null
},
"imagecreatefromgd" : {
"min" : "4.0.7",
"max" : null
},
"imagecreatefromgd2" : {
"min" : "4.0.7",
"max" : null
},
"imagecreatefromgd2part" : {
"min" : "4.0.7",
"max" : null
},
"imagecreatefromgif" : {
"min" : "4.0.0",
"max" : null
},
"imagecreatefromjpeg" : {
"min" : "4.0.0",
"max" : null
},
"imagecreatefrompng" : {
"min" : "4.0.0",
"max" : null
},
"imagecreatefromstring" : {
"min" : "4.0.4",
"max" : null
},
"imagecreatefromwbmp" : {
"min" : "4.0.1",
"max" : null
},
"imagecreatefromwebp" : {
"min" : "5.4.0",
"max" : null
},
"imagecreatefromxbm" : {
"min" : "4.0.1",
"max" : null
},
"imagecreatefromxpm" : {
"min" : "4.0.1",
"max" : null
},
"imagecreatetruecolor" : {
"min" : "4.0.6",
"max" : null
},
"imagecrop" : {
"min" : "5.5.0",
"max" : null
},
"imagecropauto" : {
"min" : "5.5.0",
"max" : null
},
"imagedashedline" : {
"min" : "4.0.0",
"max" : null
},
"imagedestroy" : {
"min" : "4.0.0",
"max" : null
},
"imageellipse" : {
"min" : "4.0.6",
"max" : null
},
"imagefill" : {
"min" : "4.0.0",
"max" : null
},
"imagefilledarc" : {
"min" : "4.0.6",
"max" : null
},
"imagefilledellipse" : {
"min" : "4.0.6",
"max" : null
},
"imagefilledpolygon" : {
"min" : "4.0.0",
"max" : null
},
"imagefilledrectangle" : {
"min" : "4.0.0",
"max" : null
},
"imagefilltoborder" : {
"min" : "4.0.0",
"max" : null
},
"imagefilter" : {
"min" : "5.0.0",
"max" : null
},
"imageflip" : {
"min" : "5.5.0",
"max" : null
},
"imagefontheight" : {
"min" : "4.0.0",
"max" : null
},
"imagefontwidth" : {
"min" : "4.0.0",
"max" : null
},
"imageftbbox" : {
"min" : "4.0.7",
"max" : null
},
"imagefttext" : {
"min" : "4.0.7",
"max" : null
},
"imagegammacorrect" : {
"min" : "4.0.0",
"max" : null
},
"imagegd" : {
"min" : "4.0.7",
"max" : null
},
"imagegd2" : {
"min" : "4.0.7",
"max" : null
},
"imagegif" : {
"min" : "4.0.0",
"max" : null
},
"imagegrabscreen" : {
"min" : "5.2.2",
"max" : null
},
"imagegrabwindow" : {
"min" : "5.2.2",
"max" : null
},
"imageinterlace" : {
"min" : "4.0.0",
"max" : null
},
"imageistruecolor" : {
"min" : "4.3.2",
"max" : null
},
"imagejpeg" : {
"min" : "4.0.0",
"max" : null
},
"imagelayereffect" : {
"min" : "4.3.0",
"max" : null
},
"imageline" : {
"min" : "4.0.0",
"max" : null
},
"imageloadfont" : {
"min" : "4.0.0",
"max" : null
},
"imagepalettecopy" : {
"min" : "4.0.1",
"max" : null
},
"imagepalettetotruecolor" : {
"min" : "5.5.0",
"max" : null
},
"imagepng" : {
"min" : "4.0.0",
"max" : null
},
"imagepolygon" : {
"min" : "4.0.0",
"max" : null
},
"imagepsbbox" : {
"min" : "4.0.0",
"max" : null
},
"imagepsencodefont" : {
"min" : "4.0.0",
"max" : null
},
"imagepsextendfont" : {
"min" : "4.0.0",
"max" : null
},
"imagepsfreefont" : {
"min" : "4.0.0",
"max" : null
},
"imagepsloadfont" : {
"min" : "4.0.0",
"max" : null
},
"imagepsslantfont" : {
"min" : "4.0.0",
"max" : null
},
"imagepstext" : {
"min" : "4.0.0",
"max" : null
},
"imagerectangle" : {
"min" : "4.0.0",
"max" : null
},
"imagerotate" : {
"min" : "4.3.0",
"max" : null
},
"imagesavealpha" : {
"min" : "4.3.2",
"max" : null
},
"imagescale" : {
"min" : "5.5.0",
"max" : null
},
"imagesetbrush" : {
"min" : "4.0.6",
"max" : null
},
"imagesetinterpolation" : {
"min" : "5.5.0",
"max" : null
},
"imagesetpixel" : {
"min" : "4.0.0",
"max" : null
},
"imagesetstyle" : {
"min" : "4.0.6",
"max" : null
},
"imagesetthickness" : {
"min" : "4.0.6",
"max" : null
},
"imagesettile" : {
"min" : "4.0.6",
"max" : null
},
"imagestring" : {
"min" : "4.0.0",
"max" : null
},
"imagestringup" : {
"min" : "4.0.0",
"max" : null
},
"imagesx" : {
"min" : "4.0.0",
"max" : null
},
"imagesy" : {
"min" : "4.0.0",
"max" : null
},
"imagetruecolortopalette" : {
"min" : "4.0.6",
"max" : null
},
"imagettfbbox" : {
"min" : "4.0.0",
"max" : null
},
"imagettftext" : {
"min" : "4.0.0",
"max" : null
},
"imagetypes" : {
"min" : "4.0.2",
"max" : null
},
"imagewbmp" : {
"min" : "4.0.1",
"max" : null
},
"imagewebp" : {
"min" : "5.4.0",
"max" : null
},
"imagexbm" : {
"min" : "5.0.0",
"max" : null
},
"implode" : {
"min" : "4.0.0",
"max" : null
},
"import_request_variables" : {
"min" : "4.0.7",
"max" : "5.3.28"
},
"in_array" : {
"min" : "4.0.0",
"max" : null
},
"inet_ntop" : {
"min" : "5.1.0",
"max" : null
},
"inet_pton" : {
"min" : "5.1.0",
"max" : null
},
"ini_alter" : {
"min" : "4.0.0",
"max" : null
},
"ini_get" : {
"min" : "4.0.0",
"max" : null
},
"ini_get_all" : {
"min" : "4.2.0",
"max" : null
},
"ini_restore" : {
"min" : "4.0.0",
"max" : null
},
"ini_set" : {
"min" : "4.0.0",
"max" : null
},
"interface_exists" : {
"min" : "5.0.2",
"max" : null
},
"intl_error_name" : {
"min" : "5.2.0",
"max" : null
},
"intl_get_error_code" : {
"min" : "5.2.0",
"max" : null
},
"intl_get_error_message" : {
"min" : "5.2.0",
"max" : null
},
"intl_is_failure" : {
"min" : "5.2.0",
"max" : null
},
"intlcal_add" : {
"min" : "5.5.0",
"max" : null
},
"intlcal_after" : {
"min" : "5.5.0",
"max" : null
},
"intlcal_before" : {
"min" : "5.5.0",
"max" : null
},
"intlcal_clear" : {
"min" : "5.5.0",
"max" : null
},
"intlcal_create_instance" : {
"min" : "5.5.0",
"max" : null
},
"intlcal_equals" : {
"min" : "5.5.0",
"max" : null
},
"intlcal_field_difference" : {
"min" : "5.5.0",
"max" : null
},
"intlcal_from_date_time" : {
"min" : "5.5.0",
"max" : null
},
"intlcal_get" : {
"min" : "5.5.0",
"max" : null
},
"intlcal_get_actual_maximum" : {
"min" : "5.5.0",
"max" : null
},
"intlcal_get_actual_minimum" : {
"min" : "5.5.0",
"max" : null
},
"intlcal_get_available_locales" : {
"min" : "5.5.0",
"max" : null
},
"intlcal_get_day_of_week_type" : {
"min" : "5.5.0",
"max" : null
},
"intlcal_get_error_code" : {
"min" : "5.5.0",
"max" : null
},
"intlcal_get_error_message" : {
"min" : "5.5.0",
"max" : null
},
"intlcal_get_first_day_of_week" : {
"min" : "5.5.0",
"max" : null
},
"intlcal_get_greatest_minimum" : {
"min" : "5.5.0",
"max" : null
},
"intlcal_get_keyword_values_for_locale" : {
"min" : "5.5.0",
"max" : null
},
"intlcal_get_least_maximum" : {
"min" : "5.5.0",
"max" : null
},
"intlcal_get_locale" : {
"min" : "5.5.0",
"max" : null
},
"intlcal_get_maximum" : {
"min" : "5.5.0",
"max" : null
},
"intlcal_get_minimal_days_in_first_week" : {
"min" : "5.5.0",
"max" : null
},
"intlcal_get_minimum" : {
"min" : "5.5.0",
"max" : null
},
"intlcal_get_now" : {
"min" : "5.5.0",
"max" : null
},
"intlcal_get_time" : {
"min" : "5.5.0",
"max" : null
},
"intlcal_get_time_zone" : {
"min" : "5.5.0",
"max" : null
},
"intlcal_get_type" : {
"min" : "5.5.0",
"max" : null
},
"intlcal_get_weekend_transition" : {
"min" : "5.5.0",
"max" : null
},
"intlcal_in_daylight_time" : {
"min" : "5.5.0",
"max" : null
},
"intlcal_is_equivalent_to" : {
"min" : "5.5.0",
"max" : null
},
"intlcal_is_lenient" : {
"min" : "5.5.0",
"max" : null
},
"intlcal_is_set" : {
"min" : "5.5.0",
"max" : null
},
"intlcal_is_weekend" : {
"min" : "5.5.0",
"max" : null
},
"intlcal_roll" : {
"min" : "5.5.0",
"max" : null
},
"intlcal_set" : {
"min" : "5.5.0",
"max" : null
},
"intlcal_set_first_day_of_week" : {
"min" : "5.5.0",
"max" : null
},
"intlcal_set_lenient" : {
"min" : "5.5.0",
"max" : null
},
"intlcal_set_minimal_days_in_first_week" : {
"min" : "5.5.1",
"max" : null
},
"intlcal_set_time" : {
"min" : "5.5.0",
"max" : null
},
"intlcal_set_time_zone" : {
"min" : "5.5.0",
"max" : null
},
"intlcal_to_date_time" : {
"min" : "5.5.0",
"max" : null
},
"intlgregcal_create_instance" : {
"min" : "5.5.0",
"max" : null
},
"intlgregcal_get_gregorian_change" : {
"min" : "5.5.0",
"max" : null
},
"intlgregcal_is_leap_year" : {
"min" : "5.5.0",
"max" : null
},
"intlgregcal_set_gregorian_change" : {
"min" : "5.5.0",
"max" : null
},
"intltz_count_equivalent_ids" : {
"min" : "5.5.0",
"max" : null
},
"intltz_create_default" : {
"min" : "5.5.0",
"max" : null
},
"intltz_create_enumeration" : {
"min" : "5.5.0",
"max" : null
},
"intltz_create_time_zone" : {
"min" : "5.5.0",
"max" : null
},
"intltz_from_date_time_zone" : {
"min" : "5.5.0",
"max" : null
},
"intltz_get_canonical_id" : {
"min" : "5.5.0",
"max" : null
},
"intltz_get_display_name" : {
"min" : "5.5.0",
"max" : null
},
"intltz_get_dst_savings" : {
"min" : "5.5.0",
"max" : null
},
"intltz_get_equivalent_id" : {
"min" : "5.5.0",
"max" : null
},
"intltz_get_error_code" : {
"min" : "5.5.0",
"max" : null
},
"intltz_get_error_message" : {
"min" : "5.5.0",
"max" : null
},
"intltz_get_gmt" : {
"min" : "5.5.0",
"max" : null
},
"intltz_get_id" : {
"min" : "5.5.0",
"max" : null
},
"intltz_get_offset" : {
"min" : "5.5.0",
"max" : null
},
"intltz_get_raw_offset" : {
"min" : "5.5.0",
"max" : null
},
"intltz_get_tz_data_version" : {
"min" : "5.5.0",
"max" : null
},
"intltz_has_same_rules" : {
"min" : "5.5.0",
"max" : null
},
"intltz_to_date_time_zone" : {
"min" : "5.5.0",
"max" : null
},
"intltz_use_daylight_time" : {
"min" : "5.5.0",
"max" : null
},
"intval" : {
"min" : "4.0.0",
"max" : null
},
"ip2long" : {
"min" : "4.0.0",
"max" : null
},
"iptcembed" : {
"min" : "4.0.0",
"max" : null
},
"iptcparse" : {
"min" : "4.0.0",
"max" : null
},
"is_a" : {
"min" : "4.2.0",
"max" : null
},
"is_array" : {
"min" : "4.0.0",
"max" : null
},
"is_bool" : {
"min" : "4.0.0",
"max" : null
},
"is_callable" : {
"min" : "4.0.6",
"max" : null
},
"is_dir" : {
"min" : "4.0.0",
"max" : null
},
"is_double" : {
"min" : "4.0.0",
"max" : null
},
"is_executable" : {
"min" : "4.0.0",
"max" : null
},
"is_file" : {
"min" : "4.0.0",
"max" : null
},
"is_finite" : {
"min" : "4.2.0",
"max" : null
},
"is_float" : {
"min" : "4.0.0",
"max" : null
},
"is_infinite" : {
"min" : "4.2.0",
"max" : null
},
"is_int" : {
"min" : "4.0.0",
"max" : null
},
"is_integer" : {
"min" : "4.0.0",
"max" : null
},
"is_link" : {
"min" : "4.0.0",
"max" : null
},
"is_long" : {
"min" : "4.0.0",
"max" : null
},
"is_nan" : {
"min" : "4.2.0",
"max" : null
},
"is_null" : {
"min" : "4.0.4",
"max" : null
},
"is_numeric" : {
"min" : "4.0.0",
"max" : null
},
"is_object" : {
"min" : "4.0.0",
"max" : null
},
"is_readable" : {
"min" : "4.0.0",
"max" : null
},
"is_real" : {
"min" : "4.0.0",
"max" : null
},
"is_resource" : {
"min" : "4.0.0",
"max" : null
},
"is_scalar" : {
"min" : "4.0.5",
"max" : null
},
"is_string" : {
"min" : "4.0.0",
"max" : null
},
"is_subclass_of" : {
"min" : "4.0.0",
"max" : null
},
"is_uploaded_file" : {
"min" : "4.0.3",
"max" : null
},
"is_writable" : {
"min" : "4.0.0",
"max" : null
},
"is_writeable" : {
"min" : "4.0.0",
"max" : null
},
"isset" : {
"min" : "4.0.0",
"max" : null
},
"iterator_apply" : {
"min" : "5.1.0",
"max" : null
},
"iterator_count" : {
"min" : "5.1.0",
"max" : null
},
"iterator_to_array" : {
"min" : "5.1.0",
"max" : null
},
"join" : {
"min" : "4.0.0",
"max" : null
},
"jpeg2wbmp" : {
"min" : "4.0.5",
"max" : null
},
"json_decode" : {
"min" : "5.2.0",
"max" : null
},
"json_encode" : {
"min" : "5.2.0",
"max" : null
},
"json_last_error" : {
"min" : "5.3.0",
"max" : null
},
"json_last_error_msg" : {
"min" : "5.5.0",
"max" : null
},
"key" : {
"min" : "4.0.0",
"max" : null
},
"key_exists" : {
"min" : "4.0.6",
"max" : null
},
"krsort" : {
"min" : "4.0.0",
"max" : null
},
"ksort" : {
"min" : "4.0.0",
"max" : null
},
"lcfirst" : {
"min" : "5.3.0",
"max" : null
},
"lcg_value" : {
"min" : "4.0.0",
"max" : null
},
"lchgrp" : {
"min" : "5.1.0",
"max" : null
},
"lchown" : {
"min" : "5.1.0",
"max" : null
},
"levenshtein" : {
"min" : "4.0.1",
"max" : null
},
"libxml_clear_errors" : {
"min" : "5.1.0",
"max" : null
},
"libxml_disable_entity_loader" : {
"min" : "5.2.11",
"max" : null
},
"libxml_get_errors" : {
"min" : "5.1.0",
"max" : null
},
"libxml_get_last_error" : {
"min" : "5.1.0",
"max" : null
},
"libxml_set_external_entity_loader" : {
"min" : "5.4.0",
"max" : null
},
"libxml_set_streams_context" : {
"min" : "5.0.0",
"max" : null
},
"libxml_use_internal_errors" : {
"min" : "5.1.0",
"max" : null
},
"link" : {
"min" : "4.0.0",
"max" : null
},
"linkinfo" : {
"min" : "4.0.0",
"max" : null
},
"list" : {
"min" : "4.0.0",
"max" : null
},
"locale_accept_from_http" : {
"min" : "5.2.4",
"max" : null
},
"locale_canonicalize" : {
"min" : "5.2.0",
"max" : null
},
"locale_compose" : {
"min" : "5.2.0",
"max" : null
},
"locale_filter_matches" : {
"min" : "5.2.0",
"max" : null
},
"locale_get_all_variants" : {
"min" : "5.2.0",
"max" : null
},
"locale_get_default" : {
"min" : "5.2.0",
"max" : null
},
"locale_get_display_language" : {
"min" : "5.2.0",
"max" : null
},
"locale_get_display_name" : {
"min" : "5.2.0",
"max" : null
},
"locale_get_display_region" : {
"min" : "5.2.0",
"max" : null
},
"locale_get_display_script" : {
"min" : "5.2.0",
"max" : null
},
"locale_get_display_variant" : {
"min" : "5.2.0",
"max" : null
},
"locale_get_keywords" : {
"min" : "5.2.0",
"max" : null
},
"locale_get_primary_language" : {
"min" : "5.2.0",
"max" : null
},
"locale_get_region" : {
"min" : "5.2.0",
"max" : null
},
"locale_get_script" : {
"min" : "5.2.0",
"max" : null
},
"locale_lookup" : {
"min" : "5.2.0",
"max" : null
},
"locale_parse" : {
"min" : "5.2.0",
"max" : null
},
"locale_set_default" : {
"min" : "5.2.0",
"max" : null
},
"localeconv" : {
"min" : "4.0.0",
"max" : null
},
"localtime" : {
"min" : "4.0.0",
"max" : null
},
"log" : {
"min" : "4.0.0",
"max" : null
},
"log10" : {
"min" : "4.0.0",
"max" : null
},
"log1p" : {
"min" : "4.0.7",
"max" : null
},
"long2ip" : {
"min" : "4.0.0",
"max" : null
},
"lstat" : {
"min" : "4.0.0",
"max" : null
},
"ltrim" : {
"min" : "4.0.0",
"max" : null
},
"magic_quotes_runtime" : {
"min" : "4.0.0",
"max" : null
},
"mail" : {
"min" : "4.0.0",
"max" : null
},
"max" : {
"min" : "4.0.0",
"max" : null
},
"md5" : {
"min" : "4.0.0",
"max" : null
},
"md5_file" : {
"min" : "4.2.0",
"max" : null
},
"memory_get_peak_usage" : {
"min" : "5.2.0",
"max" : null
},
"memory_get_usage" : {
"min" : "4.3.2",
"max" : null
},
"metaphone" : {
"min" : "4.0.0",
"max" : null
},
"method_exists" : {
"min" : "4.0.0",
"max" : null
},
"microtime" : {
"min" : "4.0.0",
"max" : null
},
"mime_content_type" : {
"min" : "5.3.0",
"max" : null
},
"min" : {
"min" : "4.0.0",
"max" : null
},
"mkdir" : {
"min" : "4.0.0",
"max" : null
},
"mktime" : {
"min" : "4.0.0",
"max" : null
},
"money_format" : {
"min" : "4.3.0",
"max" : null
},
"move_uploaded_file" : {
"min" : "4.0.3",
"max" : null
},
"msgfmt_create" : {
"min" : "5.2.0",
"max" : null
},
"msgfmt_format" : {
"min" : "5.2.0",
"max" : null
},
"msgfmt_format_message" : {
"min" : "5.2.0",
"max" : null
},
"msgfmt_get_error_code" : {
"min" : "5.2.0",
"max" : null
},
"msgfmt_get_error_message" : {
"min" : "5.2.0",
"max" : null
},
"msgfmt_get_locale" : {
"min" : "5.2.0",
"max" : null
},
"msgfmt_get_pattern" : {
"min" : "5.2.0",
"max" : null
},
"msgfmt_parse" : {
"min" : "5.2.0",
"max" : null
},
"msgfmt_parse_message" : {
"min" : "5.2.0",
"max" : null
},
"msgfmt_set_pattern" : {
"min" : "5.2.0",
"max" : null
},
"mt_getrandmax" : {
"min" : "4.0.0",
"max" : null
},
"mt_rand" : {
"min" : "4.0.0",
"max" : null
},
"mt_srand" : {
"min" : "4.0.0",
"max" : null
},
"mysql" : {
"min" : "4.0.0",
"max" : null
},
"mysql_affected_rows" : {
"min" : "4.0.0",
"max" : null
},
"mysql_client_encoding" : {
"min" : "4.3.0",
"max" : null
},
"mysql_close" : {
"min" : "4.0.0",
"max" : null
},
"mysql_connect" : {
"min" : "4.0.0",
"max" : null
},
"mysql_create_db" : {
"min" : "4.0.0",
"max" : null
},
"mysql_data_seek" : {
"min" : "4.0.0",
"max" : null
},
"mysql_db_name" : {
"min" : "4.0.0",
"max" : null
},
"mysql_db_query" : {
"min" : "4.0.0",
"max" : null
},
"mysql_dbname" : {
"min" : "4.0.0",
"max" : null
},
"mysql_drop_db" : {
"min" : "4.0.0",
"max" : null
},
"mysql_errno" : {
"min" : "4.0.0",
"max" : null
},
"mysql_error" : {
"min" : "4.0.0",
"max" : null
},
"mysql_escape_string" : {
"min" : "4.0.3",
"max" : null
},
"mysql_fetch_array" : {
"min" : "4.0.0",
"max" : null
},
"mysql_fetch_assoc" : {
"min" : "4.0.3",
"max" : null
},
"mysql_fetch_field" : {
"min" : "4.0.0",
"max" : null
},
"mysql_fetch_lengths" : {
"min" : "4.0.0",
"max" : null
},
"mysql_fetch_object" : {
"min" : "4.0.0",
"max" : null
},
"mysql_fetch_row" : {
"min" : "4.0.0",
"max" : null
},
"mysql_field_flags" : {
"min" : "4.0.0",
"max" : null
},
"mysql_field_len" : {
"min" : "4.0.0",
"max" : null
},
"mysql_field_name" : {
"min" : "4.0.0",
"max" : null
},
"mysql_field_seek" : {
"min" : "4.0.0",
"max" : null
},
"mysql_field_table" : {
"min" : "4.0.0",
"max" : null
},
"mysql_field_type" : {
"min" : "4.0.0",
"max" : null
},
"mysql_fieldflags" : {
"min" : "4.0.0",
"max" : null
},
"mysql_fieldlen" : {
"min" : "4.0.0",
"max" : null
},
"mysql_fieldname" : {
"min" : "4.0.0",
"max" : null
},
"mysql_fieldtable" : {
"min" : "4.0.0",
"max" : null
},
"mysql_fieldtype" : {
"min" : "4.0.0",
"max" : null
},
"mysql_free_result" : {
"min" : "4.0.0",
"max" : null
},
"mysql_freeresult" : {
"min" : "4.0.0",
"max" : null
},
"mysql_get_client_info" : {
"min" : "4.0.5",
"max" : null
},
"mysql_get_host_info" : {
"min" : "4.0.5",
"max" : null
},
"mysql_get_proto_info" : {
"min" : "4.0.5",
"max" : null
},
"mysql_get_server_info" : {
"min" : "4.0.5",
"max" : null
},
"mysql_info" : {
"min" : "4.3.0",
"max" : null
},
"mysql_insert_id" : {
"min" : "4.0.0",
"max" : null
},
"mysql_list_dbs" : {
"min" : "4.0.0",
"max" : null
},
"mysql_list_fields" : {
"min" : "4.0.0",
"max" : null
},
"mysql_list_processes" : {
"min" : "4.3.0",
"max" : null
},
"mysql_list_tables" : {
"min" : "4.0.0",
"max" : null
},
"mysql_listdbs" : {
"min" : "4.0.0",
"max" : null
},
"mysql_listfields" : {
"min" : "4.0.0",
"max" : null
},
"mysql_listtables" : {
"min" : "4.0.0",
"max" : null
},
"mysql_num_fields" : {
"min" : "4.0.0",
"max" : null
},
"mysql_num_rows" : {
"min" : "4.0.0",
"max" : null
},
"mysql_numfields" : {
"min" : "4.0.0",
"max" : null
},
"mysql_numrows" : {
"min" : "4.0.0",
"max" : null
},
"mysql_pconnect" : {
"min" : "4.0.0",
"max" : null
},
"mysql_ping" : {
"min" : "4.3.0",
"max" : null
},
"mysql_query" : {
"min" : "4.0.0",
"max" : null
},
"mysql_real_escape_string" : {
"min" : "4.3.0",
"max" : null
},
"mysql_result" : {
"min" : "4.0.0",
"max" : null
},
"mysql_select_db" : {
"min" : "4.0.0",
"max" : null
},
"mysql_selectdb" : {
"min" : "4.0.0",
"max" : null
},
"mysql_set_charset" : {
"min" : "5.2.3",
"max" : null
},
"mysql_stat" : {
"min" : "4.3.0",
"max" : null
},
"mysql_table_name" : {
"min" : "4.0.0",
"max" : null
},
"mysql_tablename" : {
"min" : "4.0.0",
"max" : null
},
"mysql_thread_id" : {
"min" : "4.3.0",
"max" : null
},
"mysql_unbuffered_query" : {
"min" : "4.0.6",
"max" : null
},
"mysqli_affected_rows" : {
"min" : "5.0.0",
"max" : null
},
"mysqli_autocommit" : {
"min" : "5.0.0",
"max" : null
},
"mysqli_begin_transaction" : {
"min" : "5.5.0",
"max" : null
},
"mysqli_bind_param" : {
"min" : "5.0.0",
"max" : "5.3.28"
},
"mysqli_bind_result" : {
"min" : "5.0.0",
"max" : "5.3.28"
},
"mysqli_change_user" : {
"min" : "5.0.0",
"max" : null
},
"mysqli_character_set_name" : {
"min" : "5.0.0",
"max" : null
},
"mysqli_client_encoding" : {
"min" : "5.0.0",
"max" : "5.3.28"
},
"mysqli_close" : {
"min" : "5.0.0",
"max" : null
},
"mysqli_commit" : {
"min" : "5.0.0",
"max" : null
},
"mysqli_connect" : {
"min" : "5.0.0",
"max" : null
},
"mysqli_connect_errno" : {
"min" : "5.0.0",
"max" : null
},
"mysqli_connect_error" : {
"min" : "5.0.0",
"max" : null
},
"mysqli_data_seek" : {
"min" : "5.0.0",
"max" : null
},
"mysqli_debug" : {
"min" : "5.0.0",
"max" : null
},
"mysqli_disable_reads_from_master" : {
"min" : "5.0.0",
"max" : "5.2.17"
},
"mysqli_disable_rpl_parse" : {
"min" : "5.0.0",
"max" : "5.2.17"
},
"mysqli_dump_debug_info" : {
"min" : "5.0.0",
"max" : null
},
"mysqli_embedded_server_end" : {
"min" : "5.0.0",
"max" : null
},
"mysqli_embedded_server_start" : {
"min" : "5.0.0",
"max" : null
},
"mysqli_enable_reads_from_master" : {
"min" : "5.0.0",
"max" : "5.2.17"
},
"mysqli_enable_rpl_parse" : {
"min" : "5.0.0",
"max" : "5.2.17"
},
"mysqli_errno" : {
"min" : "5.0.0",
"max" : null
},
"mysqli_error" : {
"min" : "5.0.0",
"max" : null
},
"mysqli_error_list" : {
"min" : "5.4.0",
"max" : null
},
"mysqli_escape_string" : {
"min" : "5.0.0",
"max" : null
},
"mysqli_execute" : {
"min" : "5.0.0",
"max" : null
},
"mysqli_fetch" : {
"min" : "5.0.0",
"max" : "5.3.28"
},
"mysqli_fetch_all" : {
"min" : "5.0.0",
"max" : null
},
"mysqli_fetch_array" : {
"min" : "5.0.0",
"max" : null
},
"mysqli_fetch_assoc" : {
"min" : "5.0.0",
"max" : null
},
"mysqli_fetch_field" : {
"min" : "5.0.0",
"max" : null
},
"mysqli_fetch_field_direct" : {
"min" : "5.0.0",
"max" : null
},
"mysqli_fetch_fields" : {
"min" : "5.0.0",
"max" : null
},
"mysqli_fetch_lengths" : {
"min" : "5.0.0",
"max" : null
},
"mysqli_fetch_object" : {
"min" : "5.0.0",
"max" : null
},
"mysqli_fetch_row" : {
"min" : "5.0.0",
"max" : null
},
"mysqli_field_count" : {
"min" : "5.0.0",
"max" : null
},
"mysqli_field_seek" : {
"min" : "5.0.0",
"max" : null
},
"mysqli_field_tell" : {
"min" : "5.0.0",
"max" : null
},
"mysqli_free_result" : {
"min" : "5.0.0",
"max" : null
},
"mysqli_get_cache_stats" : {
"min" : "5.0.0",
"max" : null
},
"mysqli_get_charset" : {
"min" : "5.0.0",
"max" : null
},
"mysqli_get_client_info" : {
"min" : "5.0.0",
"max" : null
},
"mysqli_get_client_stats" : {
"min" : "5.0.0",
"max" : null
},
"mysqli_get_client_version" : {
"min" : "5.0.0",
"max" : null
},
"mysqli_get_connection_stats" : {
"min" : "5.0.0",
"max" : null
},
"mysqli_get_host_info" : {
"min" : "5.0.0",
"max" : null
},
"mysqli_get_metadata" : {
"min" : "5.0.0",
"max" : "5.3.28"
},
"mysqli_get_proto_info" : {
"min" : "5.0.0",
"max" : null
},
"mysqli_get_server_info" : {
"min" : "5.0.0",
"max" : null
},
"mysqli_get_server_version" : {
"min" : "5.0.0",
"max" : null
},
"mysqli_get_warnings" : {
"min" : "5.0.0",
"max" : null
},
"mysqli_info" : {
"min" : "5.0.0",
"max" : null
},
"mysqli_init" : {
"min" : "5.0.0",
"max" : null
},
"mysqli_insert_id" : {
"min" : "5.0.0",
"max" : null
},
"mysqli_kill" : {
"min" : "5.0.0",
"max" : null
},
"mysqli_master_query" : {
"min" : "5.0.0",
"max" : "5.2.17"
},
"mysqli_more_results" : {
"min" : "5.0.0",
"max" : null
},
"mysqli_multi_query" : {
"min" : "5.0.0",
"max" : null
},
"mysqli_next_result" : {
"min" : "5.0.0",
"max" : null
},
"mysqli_num_fields" : {
"min" : "5.0.0",
"max" : null
},
"mysqli_num_rows" : {
"min" : "5.0.0",
"max" : null
},
"mysqli_options" : {
"min" : "5.0.0",
"max" : null
},
"mysqli_param_count" : {
"min" : "5.0.0",
"max" : "5.3.28"
},
"mysqli_ping" : {
"min" : "5.0.0",
"max" : null
},
"mysqli_poll" : {
"min" : "5.0.0",
"max" : null
},
"mysqli_prepare" : {
"min" : "5.0.0",
"max" : null
},
"mysqli_query" : {
"min" : "5.0.0",
"max" : null
},
"mysqli_real_connect" : {
"min" : "5.0.0",
"max" : null
},
"mysqli_real_escape_string" : {
"min" : "5.0.0",
"max" : null
},
"mysqli_real_query" : {
"min" : "5.0.0",
"max" : null
},
"mysqli_reap_async_query" : {
"min" : "5.0.0",
"max" : null
},
"mysqli_refresh" : {
"min" : "5.3.0",
"max" : null
},
"mysqli_release_savepoint" : {
"min" : "5.5.0",
"max" : null
},
"mysqli_report" : {
"min" : "5.0.0",
"max" : null
},
"mysqli_rollback" : {
"min" : "5.0.0",
"max" : null
},
"mysqli_rpl_parse_enabled" : {
"min" : "5.0.0",
"max" : "5.2.17"
},
"mysqli_rpl_probe" : {
"min" : "5.0.0",
"max" : "5.2.17"
},
"mysqli_rpl_query_type" : {
"min" : "5.0.0",
"max" : "5.2.17"
},
"mysqli_savepoint" : {
"min" : "5.5.0",
"max" : null
},
"mysqli_select_db" : {
"min" : "5.0.0",
"max" : null
},
"mysqli_send_long_data" : {
"min" : "5.0.0",
"max" : "5.3.28"
},
"mysqli_send_query" : {
"min" : "5.0.0",
"max" : "5.2.17"
},
"mysqli_set_charset" : {
"min" : "5.0.0",
"max" : null
},
"mysqli_set_local_infile_default" : {
"min" : "5.0.0",
"max" : null
},
"mysqli_set_local_infile_handler" : {
"min" : "5.0.0",
"max" : null
},
"mysqli_set_opt" : {
"min" : "5.0.0",
"max" : null
},
"mysqli_slave_query" : {
"min" : "5.0.0",
"max" : "5.2.17"
},
"mysqli_sqlstate" : {
"min" : "5.0.0",
"max" : null
},
"mysqli_ssl_set" : {
"min" : "5.0.0",
"max" : null
},
"mysqli_stat" : {
"min" : "5.0.0",
"max" : null
},
"mysqli_stmt_affected_rows" : {
"min" : "5.0.0",
"max" : null
},
"mysqli_stmt_attr_get" : {
"min" : "5.0.0",
"max" : null
},
"mysqli_stmt_attr_set" : {
"min" : "5.0.0",
"max" : null
},
"mysqli_stmt_bind_param" : {
"min" : "5.0.0",
"max" : null
},
"mysqli_stmt_bind_result" : {
"min" : "5.0.0",
"max" : null
},
"mysqli_stmt_close" : {
"min" : "5.0.0",
"max" : null
},
"mysqli_stmt_data_seek" : {
"min" : "5.0.0",
"max" : null
},
"mysqli_stmt_errno" : {
"min" : "5.0.0",
"max" : null
},
"mysqli_stmt_error" : {
"min" : "5.0.0",
"max" : null
},
"mysqli_stmt_error_list" : {
"min" : "5.4.0",
"max" : null
},
"mysqli_stmt_execute" : {
"min" : "5.0.0",
"max" : null
},
"mysqli_stmt_fetch" : {
"min" : "5.0.0",
"max" : null
},
"mysqli_stmt_field_count" : {
"min" : "5.0.0",
"max" : null
},
"mysqli_stmt_free_result" : {
"min" : "5.0.0",
"max" : null
},
"mysqli_stmt_get_result" : {
"min" : "5.0.0",
"max" : null
},
"mysqli_stmt_get_warnings" : {
"min" : "5.0.0",
"max" : null
},
"mysqli_stmt_init" : {
"min" : "5.0.0",
"max" : null
},
"mysqli_stmt_insert_id" : {
"min" : "5.0.0",
"max" : null
},
"mysqli_stmt_more_results" : {
"min" : "5.0.0",
"max" : null
},
"mysqli_stmt_next_result" : {
"min" : "5.0.0",
"max" : null
},
"mysqli_stmt_num_rows" : {
"min" : "5.0.0",
"max" : null
},
"mysqli_stmt_param_count" : {
"min" : "5.0.0",
"max" : null
},
"mysqli_stmt_prepare" : {
"min" : "5.0.0",
"max" : null
},
"mysqli_stmt_reset" : {
"min" : "5.0.0",
"max" : null
},
"mysqli_stmt_result_metadata" : {
"min" : "5.0.0",
"max" : null
},
"mysqli_stmt_send_long_data" : {
"min" : "5.0.0",
"max" : null
},
"mysqli_stmt_sqlstate" : {
"min" : "5.0.0",
"max" : null
},
"mysqli_stmt_store_result" : {
"min" : "5.0.0",
"max" : null
},
"mysqli_store_result" : {
"min" : "5.0.0",
"max" : null
},
"mysqli_thread_id" : {
"min" : "5.0.0",
"max" : null
},
"mysqli_thread_safe" : {
"min" : "5.0.0",
"max" : null
},
"mysqli_use_result" : {
"min" : "5.0.0",
"max" : null
},
"mysqli_warning_count" : {
"min" : "5.0.0",
"max" : null
},
"natcasesort" : {
"min" : "4.0.0",
"max" : null
},
"natsort" : {
"min" : "4.0.0",
"max" : null
},
"next" : {
"min" : "4.0.0",
"max" : null
},
"ngettext" : {
"min" : "4.2.0",
"max" : null
},
"nl2br" : {
"min" : "4.0.0",
"max" : null
},
"nl_langinfo" : {
"min" : "4.1.0",
"max" : null
},
"normalizer_is_normalized" : {
"min" : "5.2.0",
"max" : null
},
"normalizer_normalize" : {
"min" : "5.2.0",
"max" : null
},
"number_format" : {
"min" : "4.0.0",
"max" : null
},
"numfmt_create" : {
"min" : "5.2.0",
"max" : null
},
"numfmt_format" : {
"min" : "5.2.0",
"max" : null
},
"numfmt_format_currency" : {
"min" : "5.2.0",
"max" : null
},
"numfmt_get_attribute" : {
"min" : "5.2.0",
"max" : null
},
"numfmt_get_error_code" : {
"min" : "5.2.0",
"max" : null
},
"numfmt_get_error_message" : {
"min" : "5.2.0",
"max" : null
},
"numfmt_get_locale" : {
"min" : "5.2.0",
"max" : null
},
"numfmt_get_pattern" : {
"min" : "5.2.0",
"max" : null
},
"numfmt_get_symbol" : {
"min" : "5.2.0",
"max" : null
},
"numfmt_get_text_attribute" : {
"min" : "5.2.0",
"max" : null
},
"numfmt_parse" : {
"min" : "5.2.0",
"max" : null
},
"numfmt_parse_currency" : {
"min" : "5.2.0",
"max" : null
},
"numfmt_set_attribute" : {
"min" : "5.2.0",
"max" : null
},
"numfmt_set_pattern" : {
"min" : "5.2.0",
"max" : null
},
"numfmt_set_symbol" : {
"min" : "5.2.0",
"max" : null
},
"numfmt_set_text_attribute" : {
"min" : "5.2.0",
"max" : null
},
"ob_clean" : {
"min" : "4.2.0",
"max" : null
},
"ob_end_clean" : {
"min" : "4.0.0",
"max" : null
},
"ob_end_flush" : {
"min" : "4.0.0",
"max" : null
},
"ob_flush" : {
"min" : "4.2.0",
"max" : null
},
"ob_get_clean" : {
"min" : "4.3.0",
"max" : null
},
"ob_get_contents" : {
"min" : "4.0.0",
"max" : null
},
"ob_get_flush" : {
"min" : "4.3.0",
"max" : null
},
"ob_get_length" : {
"min" : "4.0.2",
"max" : null
},
"ob_get_level" : {
"min" : "4.2.0",
"max" : null
},
"ob_get_status" : {
"min" : "4.2.0",
"max" : null
},
"ob_implicit_flush" : {
"min" : "4.0.0",
"max" : null
},
"ob_list_handlers" : {
"min" : "4.3.0",
"max" : null
},
"ob_start" : {
"min" : "4.0.0",
"max" : null
},
"octdec" : {
"min" : "4.0.0",
"max" : null
},
"opendir" : {
"min" : "4.0.0",
"max" : null
},
"openlog" : {
"min" : "4.0.0",
"max" : null
},
"ord" : {
"min" : "4.0.0",
"max" : null
},
"output_add_rewrite_var" : {
"min" : "4.0.0",
"max" : null
},
"output_reset_rewrite_vars" : {
"min" : "4.3.0",
"max" : null
},
"pack" : {
"min" : "4.0.0",
"max" : null
},
"parse_ini_file" : {
"min" : "4.0.0",
"max" : null
},
"parse_ini_string" : {
"min" : "5.3.0",
"max" : null
},
"parse_str" : {
"min" : "4.0.0",
"max" : null
},
"parse_url" : {
"min" : "4.0.0",
"max" : null
},
"passthru" : {
"min" : "4.0.0",
"max" : null
},
"password_get_info" : {
"min" : "5.5.0",
"max" : null
},
"password_hash" : {
"min" : "5.5.0",
"max" : null
},
"password_needs_rehash" : {
"min" : "5.5.0",
"max" : null
},
"password_verify" : {
"min" : "5.5.0",
"max" : null
},
"pathinfo" : {
"min" : "4.0.3",
"max" : null
},
"pclose" : {
"min" : "4.0.0",
"max" : null
},
"pcntl_alarm" : {
"min" : "4.3.0",
"max" : null
},
"pcntl_errno" : {
"min" : "5.3.4",
"max" : null
},
"pcntl_exec" : {
"min" : "4.2.0",
"max" : null
},
"pcntl_fork" : {
"min" : "4.1.0",
"max" : null
},
"pcntl_get_last_error" : {
"min" : "5.3.4",
"max" : null
},
"pcntl_getpriority" : {
"min" : "5.0.0",
"max" : null
},
"pcntl_setpriority" : {
"min" : "5.0.0",
"max" : null
},
"pcntl_signal" : {
"min" : "4.1.0",
"max" : null
},
"pcntl_signal_dispatch" : {
"min" : "5.3.0",
"max" : null
},
"pcntl_sigprocmask" : {
"min" : "5.3.0",
"max" : null
},
"pcntl_sigtimedwait" : {
"min" : "5.3.0",
"max" : null
},
"pcntl_sigwaitinfo" : {
"min" : "5.3.0",
"max" : null
},
"pcntl_strerror" : {
"min" : "5.3.4",
"max" : null
},
"pcntl_wait" : {
"min" : "5.0.0",
"max" : null
},
"pcntl_waitpid" : {
"min" : "4.1.0",
"max" : null
},
"pcntl_wexitstatus" : {
"min" : "4.1.0",
"max" : null
},
"pcntl_wifexited" : {
"min" : "4.1.0",
"max" : null
},
"pcntl_wifsignaled" : {
"min" : "4.1.0",
"max" : null
},
"pcntl_wifstopped" : {
"min" : "4.1.0",
"max" : null
},
"pcntl_wstopsig" : {
"min" : "4.1.0",
"max" : null
},
"pcntl_wtermsig" : {
"min" : "4.1.0",
"max" : null
},
"pdo_drivers" : {
"min" : "5.1.0",
"max" : null
},
"pfsockopen" : {
"min" : "4.0.0",
"max" : null
},
"php_check_syntax" : {
"min" : "5.0.0",
"max" : "5.0.4"
},
"php_egg_logo_guid" : {
"min" : "4.0.3",
"max" : "5.4.30RC1"
},
"php_ini_loaded_file" : {
"min" : "5.2.4",
"max" : null
},
"php_ini_scanned_files" : {
"min" : "4.3.0",
"max" : null
},
"php_logo_guid" : {
"min" : "4.0.0",
"max" : "5.4.30RC1"
},
"php_real_logo_guid" : {
"min" : "4.0.0",
"max" : "5.4.30RC1"
},
"php_sapi_name" : {
"min" : "4.0.1",
"max" : null
},
"php_strip_whitespace" : {
"min" : "5.0.0",
"max" : null
},
"php_uname" : {
"min" : "4.0.2",
"max" : null
},
"phpcredits" : {
"min" : "4.0.0",
"max" : null
},
"phpinfo" : {
"min" : "4.0.0",
"max" : null
},
"phpversion" : {
"min" : "4.0.0",
"max" : null
},
"pi" : {
"min" : "4.0.0",
"max" : null
},
"png2wbmp" : {
"min" : "4.0.5",
"max" : null
},
"popen" : {
"min" : "4.0.0",
"max" : null
},
"pos" : {
"min" : "4.0.0",
"max" : null
},
"posix_access" : {
"min" : "5.1.0",
"max" : null
},
"posix_ctermid" : {
"min" : "4.0.0",
"max" : null
},
"posix_errno" : {
"min" : "4.2.0",
"max" : null
},
"posix_get_last_error" : {
"min" : "4.2.0",
"max" : null
},
"posix_getcwd" : {
"min" : "4.0.0",
"max" : null
},
"posix_getegid" : {
"min" : "4.0.0",
"max" : null
},
"posix_geteuid" : {
"min" : "4.0.0",
"max" : null
},
"posix_getgid" : {
"min" : "4.0.0",
"max" : null
},
"posix_getgrgid" : {
"min" : "4.0.0",
"max" : null
},
"posix_getgrnam" : {
"min" : "4.0.0",
"max" : null
},
"posix_getgroups" : {
"min" : "4.0.0",
"max" : null
},
"posix_getlogin" : {
"min" : "4.0.0",
"max" : null
},
"posix_getpgid" : {
"min" : "4.0.0",
"max" : null
},
"posix_getpgrp" : {
"min" : "4.0.0",
"max" : null
},
"posix_getpid" : {
"min" : "4.0.0",
"max" : null
},
"posix_getppid" : {
"min" : "4.0.0",
"max" : null
},
"posix_getpwnam" : {
"min" : "4.0.0",
"max" : null
},
"posix_getpwuid" : {
"min" : "4.0.0",
"max" : null
},
"posix_getrlimit" : {
"min" : "4.0.0",
"max" : null
},
"posix_getsid" : {
"min" : "4.0.0",
"max" : null
},
"posix_getuid" : {
"min" : "4.0.0",
"max" : null
},
"posix_initgroups" : {
"min" : "5.2.0",
"max" : null
},
"posix_isatty" : {
"min" : "4.0.0",
"max" : null
},
"posix_kill" : {
"min" : "4.0.0",
"max" : null
},
"posix_mkfifo" : {
"min" : "4.0.0",
"max" : null
},
"posix_mknod" : {
"min" : "5.1.0",
"max" : null
},
"posix_setegid" : {
"min" : "4.0.2",
"max" : null
},
"posix_seteuid" : {
"min" : "4.0.2",
"max" : null
},
"posix_setgid" : {
"min" : "4.0.0",
"max" : null
},
"posix_setpgid" : {
"min" : "4.0.0",
"max" : null
},
"posix_setsid" : {
"min" : "4.0.0",
"max" : null
},
"posix_setuid" : {
"min" : "4.0.0",
"max" : null
},
"posix_strerror" : {
"min" : "4.2.0",
"max" : null
},
"posix_times" : {
"min" : "4.0.0",
"max" : null
},
"posix_ttyname" : {
"min" : "4.0.0",
"max" : null
},
"posix_uname" : {
"min" : "4.0.0",
"max" : null
},
"pow" : {
"min" : "4.0.0",
"max" : null
},
"preg_filter" : {
"min" : "5.3.0",
"max" : null
},
"preg_grep" : {
"min" : "4.0.0",
"max" : null
},
"preg_last_error" : {
"min" : "5.2.0",
"max" : null
},
"preg_match" : {
"min" : "4.0.0",
"max" : null
},
"preg_match_all" : {
"min" : "4.0.0",
"max" : null
},
"preg_quote" : {
"min" : "4.0.0",
"max" : null
},
"preg_replace" : {
"min" : "4.0.0",
"max" : null
},
"preg_replace_callback" : {
"min" : "4.0.5",
"max" : null
},
"preg_split" : {
"min" : "4.0.0",
"max" : null
},
"prev" : {
"min" : "4.0.0",
"max" : null
},
"print_r" : {
"min" : "4.0.0",
"max" : null
},
"printf" : {
"min" : "4.0.0",
"max" : null
},
"proc_close" : {
"min" : "4.3.0",
"max" : null
},
"proc_get_status" : {
"min" : "5.0.0",
"max" : null
},
"proc_nice" : {
"min" : "5.0.0",
"max" : null
},
"proc_open" : {
"min" : "4.3.0",
"max" : null
},
"proc_terminate" : {
"min" : "5.0.0",
"max" : null
},
"property_exists" : {
"min" : "5.1.0",
"max" : null
},
"putenv" : {
"min" : "4.0.0",
"max" : null
},
"quoted_printable_decode" : {
"min" : "4.0.0",
"max" : null
},
"quoted_printable_encode" : {
"min" : "5.3.0",
"max" : null
},
"quotemeta" : {
"min" : "4.0.0",
"max" : null
},
"rad2deg" : {
"min" : "4.0.0",
"max" : null
},
"rand" : {
"min" : "4.0.0",
"max" : null
},
"range" : {
"min" : "4.0.0",
"max" : null
},
"rawurldecode" : {
"min" : "4.0.0",
"max" : null
},
"rawurlencode" : {
"min" : "4.0.0",
"max" : null
},
"readdir" : {
"min" : "4.0.0",
"max" : null
},
"readfile" : {
"min" : "4.0.0",
"max" : null
},
"readlink" : {
"min" : "4.0.0",
"max" : null
},
"realpath" : {
"min" : "4.0.0",
"max" : null
},
"realpath_cache_get" : {
"min" : "5.3.2",
"max" : null
},
"realpath_cache_size" : {
"min" : "5.3.2",
"max" : null
},
"register_shutdown_function" : {
"min" : "4.0.0",
"max" : null
},
"register_tick_function" : {
"min" : "4.0.3",
"max" : null
},
"rename" : {
"min" : "4.0.0",
"max" : null
},
"reset" : {
"min" : "4.0.0",
"max" : null
},
"resourcebundle_count" : {
"min" : "5.2.4",
"max" : null
},
"resourcebundle_create" : {
"min" : "5.2.4",
"max" : null
},
"resourcebundle_get" : {
"min" : "5.2.4",
"max" : null
},
"resourcebundle_get_error_code" : {
"min" : "5.2.4",
"max" : null
},
"resourcebundle_get_error_message" : {
"min" : "5.2.4",
"max" : null
},
"resourcebundle_locales" : {
"min" : "5.2.4",
"max" : null
},
"restore_error_handler" : {
"min" : "4.0.1",
"max" : null
},
"restore_exception_handler" : {
"min" : "5.0.0",
"max" : null
},
"restore_include_path" : {
"min" : "4.3.0",
"max" : null
},
"rewind" : {
"min" : "4.0.0",
"max" : null
},
"rewinddir" : {
"min" : "4.0.0",
"max" : null
},
"rmdir" : {
"min" : "4.0.0",
"max" : null
},
"round" : {
"min" : "4.0.0",
"max" : null
},
"rsort" : {
"min" : "4.0.0",
"max" : null
},
"rtrim" : {
"min" : "4.0.0",
"max" : null
},
"scandir" : {
"min" : "5.0.0",
"max" : null
},
"serialize" : {
"min" : "4.0.0",
"max" : null
},
"set_error_handler" : {
"min" : "4.0.1",
"max" : null
},
"set_exception_handler" : {
"min" : "5.0.0",
"max" : null
},
"set_file_buffer" : {
"min" : "4.0.0",
"max" : null
},
"set_include_path" : {
"min" : "4.3.0",
"max" : null
},
"set_magic_quotes_runtime" : {
"min" : "4.0.0",
"max" : null
},
"set_socket_blocking" : {
"min" : "4.0.0",
"max" : null
},
"set_time_limit" : {
"min" : "4.0.0",
"max" : null
},
"setcookie" : {
"min" : "4.0.0",
"max" : null
},
"setlocale" : {
"min" : "4.0.0",
"max" : null
},
"setrawcookie" : {
"min" : "5.0.0",
"max" : null
},
"settype" : {
"min" : "4.0.0",
"max" : null
},
"sha1" : {
"min" : "4.3.0",
"max" : null
},
"sha1_file" : {
"min" : "4.3.0",
"max" : null
},
"shell_exec" : {
"min" : "4.0.0",
"max" : null
},
"show_source" : {
"min" : "4.0.0",
"max" : null
},
"shuffle" : {
"min" : "4.0.0",
"max" : null
},
"similar_text" : {
"min" : "4.0.0",
"max" : null
},
"simplexml_import_dom" : {
"min" : "5.0.0",
"max" : null
},
"simplexml_load_file" : {
"min" : "5.0.0",
"max" : null
},
"simplexml_load_string" : {
"min" : "5.0.0",
"max" : null
},
"sin" : {
"min" : "4.0.0",
"max" : null
},
"sinh" : {
"min" : "4.0.7",
"max" : null
},
"sizeof" : {
"min" : "4.0.0",
"max" : null
},
"sleep" : {
"min" : "4.0.0",
"max" : null
},
"socket_get_status" : {
"min" : "4.0.0",
"max" : null
},
"socket_set_blocking" : {
"min" : "4.0.0",
"max" : null
},
"socket_set_timeout" : {
"min" : "4.0.0",
"max" : null
},
"sort" : {
"min" : "4.0.0",
"max" : null
},
"soundex" : {
"min" : "4.0.0",
"max" : null
},
"spl_autoload" : {
"min" : "5.1.2",
"max" : null
},
"spl_autoload_call" : {
"min" : "5.1.2",
"max" : null
},
"spl_autoload_extensions" : {
"min" : "5.1.2",
"max" : null
},
"spl_autoload_functions" : {
"min" : "5.1.2",
"max" : null
},
"spl_autoload_register" : {
"min" : "5.1.2",
"max" : null
},
"spl_autoload_unregister" : {
"min" : "5.1.2",
"max" : null
},
"spl_classes" : {
"min" : "5.0.0",
"max" : null
},
"spl_object_hash" : {
"min" : "5.2.0",
"max" : null
},
"sprintf" : {
"min" : "4.0.0",
"max" : null
},
"sqrt" : {
"min" : "4.0.0",
"max" : null
},
"srand" : {
"min" : "4.0.0",
"max" : null
},
"sscanf" : {
"min" : "4.0.1",
"max" : null
},
"stat" : {
"min" : "4.0.0",
"max" : null
},
"str_getcsv" : {
"min" : "5.3.0",
"max" : null
},
"str_ireplace" : {
"min" : "5.0.0",
"max" : null
},
"str_pad" : {
"min" : "4.0.1",
"max" : null
},
"str_repeat" : {
"min" : "4.0.0",
"max" : null
},
"str_replace" : {
"min" : "4.0.0",
"max" : null
},
"str_rot13" : {
"min" : "4.2.0",
"max" : null
},
"str_shuffle" : {
"min" : "4.3.0",
"max" : null
},
"str_split" : {
"min" : "5.0.0",
"max" : null
},
"str_word_count" : {
"min" : "4.3.0",
"max" : null
},
"strcasecmp" : {
"min" : "4.0.0",
"max" : null
},
"strchr" : {
"min" : "4.0.0",
"max" : null
},
"strcmp" : {
"min" : "4.0.0",
"max" : null
},
"strcoll" : {
"min" : "4.0.5",
"max" : null
},
"strcspn" : {
"min" : "4.0.0",
"max" : null
},
"stream_bucket_append" : {
"min" : "5.0.0",
"max" : null
},
"stream_bucket_make_writeable" : {
"min" : "5.0.0",
"max" : null
},
"stream_bucket_new" : {
"min" : "5.0.0",
"max" : null
},
"stream_bucket_prepend" : {
"min" : "5.0.0",
"max" : null
},
"stream_context_create" : {
"min" : "4.3.0",
"max" : null
},
"stream_context_get_default" : {
"min" : "5.1.0",
"max" : null
},
"stream_context_get_options" : {
"min" : "4.3.0",
"max" : null
},
"stream_context_get_params" : {
"min" : "5.3.0",
"max" : null
},
"stream_context_set_default" : {
"min" : "5.3.0",
"max" : null
},
"stream_context_set_option" : {
"min" : "4.3.0",
"max" : null
},
"stream_context_set_params" : {
"min" : "4.3.0",
"max" : null
},
"stream_copy_to_stream" : {
"min" : "5.0.0",
"max" : null
},
"stream_filter_append" : {
"min" : "4.3.0",
"max" : null
},
"stream_filter_prepend" : {
"min" : "4.3.0",
"max" : null
},
"stream_filter_register" : {
"min" : "5.0.0",
"max" : null
},
"stream_filter_remove" : {
"min" : "5.1.0",
"max" : null
},
"stream_get_contents" : {
"min" : "5.0.0",
"max" : null
},
"stream_get_filters" : {
"min" : "5.0.0",
"max" : null
},
"stream_get_line" : {
"min" : "5.0.0",
"max" : null
},
"stream_get_meta_data" : {
"min" : "4.3.0",
"max" : null
},
"stream_get_transports" : {
"min" : "5.0.0",
"max" : null
},
"stream_get_wrappers" : {
"min" : "5.0.0",
"max" : null
},
"stream_is_local" : {
"min" : "5.2.4",
"max" : null
},
"stream_register_wrapper" : {
"min" : "4.3.0",
"max" : null
},
"stream_resolve_include_path" : {
"min" : "5.3.2",
"max" : null
},
"stream_select" : {
"min" : "4.3.0",
"max" : null
},
"stream_set_blocking" : {
"min" : "4.3.0",
"max" : null
},
"stream_set_chunk_size" : {
"min" : "5.4.0",
"max" : null
},
"stream_set_read_buffer" : {
"min" : "5.3.3",
"max" : null
},
"stream_set_timeout" : {
"min" : "4.3.0",
"max" : null
},
"stream_set_write_buffer" : {
"min" : "4.3.0",
"max" : null
},
"stream_socket_accept" : {
"min" : "5.0.0",
"max" : null
},
"stream_socket_client" : {
"min" : "5.0.0",
"max" : null
},
"stream_socket_enable_crypto" : {
"min" : "5.1.0",
"max" : null
},
"stream_socket_get_name" : {
"min" : "5.0.0",
"max" : null
},
"stream_socket_pair" : {
"min" : "5.1.0",
"max" : null
},
"stream_socket_recvfrom" : {
"min" : "5.0.0",
"max" : null
},
"stream_socket_sendto" : {
"min" : "5.0.0",
"max" : null
},
"stream_socket_server" : {
"min" : "5.0.0",
"max" : null
},
"stream_socket_shutdown" : {
"min" : "5.2.1",
"max" : null
},
"stream_supports_lock" : {
"min" : "5.3.0",
"max" : null
},
"stream_wrapper_register" : {
"min" : "4.3.2",
"max" : null
},
"stream_wrapper_restore" : {
"min" : "5.1.0",
"max" : null
},
"stream_wrapper_unregister" : {
"min" : "5.1.0",
"max" : null
},
"strftime" : {
"min" : "4.0.0",
"max" : null
},
"strip_tags" : {
"min" : "4.0.0",
"max" : null
},
"stripcslashes" : {
"min" : "4.0.0",
"max" : null
},
"stripos" : {
"min" : "5.0.0",
"max" : null
},
"stripslashes" : {
"min" : "4.0.0",
"max" : null
},
"stristr" : {
"min" : "4.0.0",
"max" : null
},
"strlen" : {
"min" : "4.0.0",
"max" : null
},
"strnatcasecmp" : {
"min" : "4.0.0",
"max" : null
},
"strnatcmp" : {
"min" : "4.0.0",
"max" : null
},
"strncasecmp" : {
"min" : "4.0.2",
"max" : null
},
"strncmp" : {
"min" : "4.0.0",
"max" : null
},
"strpbrk" : {
"min" : "5.0.0",
"max" : null
},
"strpos" : {
"min" : "4.0.0",
"max" : null
},
"strptime" : {
"min" : "5.1.0",
"max" : null
},
"strrchr" : {
"min" : "4.0.0",
"max" : null
},
"strrev" : {
"min" : "4.0.0",
"max" : null
},
"strripos" : {
"min" : "5.0.0",
"max" : null
},
"strrpos" : {
"min" : "4.0.0",
"max" : null
},
"strspn" : {
"min" : "4.0.0",
"max" : null
},
"strstr" : {
"min" : "4.0.0",
"max" : null
},
"strtok" : {
"min" : "4.0.0",
"max" : null
},
"strtolower" : {
"min" : "4.0.0",
"max" : null
},
"strtotime" : {
"min" : "4.0.0",
"max" : null
},
"strtoupper" : {
"min" : "4.0.0",
"max" : null
},
"strtr" : {
"min" : "4.0.0",
"max" : null
},
"strval" : {
"min" : "4.0.0",
"max" : null
},
"substr" : {
"min" : "4.0.0",
"max" : null
},
"substr_compare" : {
"min" : "5.0.0",
"max" : null
},
"substr_count" : {
"min" : "4.0.0",
"max" : null
},
"substr_replace" : {
"min" : "4.0.0",
"max" : null
},
"symlink" : {
"min" : "4.0.0",
"max" : null
},
"sys_get_temp_dir" : {
"min" : "5.2.1",
"max" : null
},
"sys_getloadavg" : {
"min" : "5.1.3",
"max" : null
},
"syslog" : {
"min" : "4.0.0",
"max" : null
},
"system" : {
"min" : "4.0.0",
"max" : null
},
"tan" : {
"min" : "4.0.0",
"max" : null
},
"tanh" : {
"min" : "4.0.0",
"max" : null
},
"tempnam" : {
"min" : "4.0.0",
"max" : null
},
"textdomain" : {
"min" : "4.0.0",
"max" : null
},
"time" : {
"min" : "4.0.0",
"max" : null
},
"time_nanosleep" : {
"min" : "5.0.0",
"max" : null
},
"time_sleep_until" : {
"min" : "5.1.0",
"max" : null
},
"timezone_abbreviations_list" : {
"min" : "5.1.0",
"max" : null
},
"timezone_identifiers_list" : {
"min" : "5.1.0",
"max" : null
},
"timezone_location_get" : {
"min" : "5.3.0",
"max" : null
},
"timezone_name_from_abbr" : {
"min" : "5.1.3",
"max" : null
},
"timezone_name_get" : {
"min" : "5.1.0",
"max" : null
},
"timezone_offset_get" : {
"min" : "5.1.0",
"max" : null
},
"timezone_open" : {
"min" : "5.1.0",
"max" : null
},
"timezone_transitions_get" : {
"min" : "5.2.0",
"max" : null
},
"timezone_version_get" : {
"min" : "5.3.0",
"max" : null
},
"tmpfile" : {
"min" : "4.0.0",
"max" : null
},
"touch" : {
"min" : "4.0.0",
"max" : null
},
"trait_exists" : {
"min" : "5.4.0",
"max" : null
},
"transliterator_create" : {
"min" : "5.4.0",
"max" : null
},
"transliterator_create_from_rules" : {
"min" : "5.4.0",
"max" : null
},
"transliterator_create_inverse" : {
"min" : "5.4.0",
"max" : null
},
"transliterator_get_error_code" : {
"min" : "5.4.0",
"max" : null
},
"transliterator_get_error_message" : {
"min" : "5.4.0",
"max" : null
},
"transliterator_list_ids" : {
"min" : "5.4.0",
"max" : null
},
"transliterator_transliterate" : {
"min" : "5.4.0",
"max" : null
},
"trigger_error" : {
"min" : "4.0.1",
"max" : null
},
"trim" : {
"min" : "4.0.0",
"max" : null
},
"uasort" : {
"min" : "4.0.0",
"max" : null
},
"ucfirst" : {
"min" : "4.0.0",
"max" : null
},
"ucwords" : {
"min" : "4.0.0",
"max" : null
},
"uksort" : {
"min" : "4.0.0",
"max" : null
},
"umask" : {
"min" : "4.0.0",
"max" : null
},
"uniqid" : {
"min" : "4.0.0",
"max" : null
},
"unlink" : {
"min" : "4.0.0",
"max" : null
},
"unpack" : {
"min" : "4.0.0",
"max" : null
},
"unregister_tick_function" : {
"min" : "4.0.3",
"max" : null
},
"unserialize" : {
"min" : "4.0.0",
"max" : null
},
"urldecode" : {
"min" : "4.0.0",
"max" : null
},
"urlencode" : {
"min" : "4.0.0",
"max" : null
},
"user_error" : {
"min" : "4.0.0",
"max" : null
},
"usleep" : {
"min" : "4.0.0",
"max" : null
},
"usort" : {
"min" : "4.0.0",
"max" : null
},
"utf8_decode" : {
"min" : "4.0.0",
"max" : null
},
"utf8_encode" : {
"min" : "4.0.0",
"max" : null
},
"var_dump" : {
"min" : "4.0.0",
"max" : null
},
"var_export" : {
"min" : "4.2.0",
"max" : null
},
"version_compare" : {
"min" : "4.0.7",
"max" : null
},
"vfprintf" : {
"min" : "5.0.0",
"max" : null
},
"vprintf" : {
"min" : "4.0.7",
"max" : null
},
"vsprintf" : {
"min" : "4.0.7",
"max" : null
},
"wordwrap" : {
"min" : "4.0.2",
"max" : null
},
"xml_error_string" : {
"min" : "4.0.0",
"max" : null
},
"xml_get_current_byte_index" : {
"min" : "4.0.0",
"max" : null
},
"xml_get_current_column_number" : {
"min" : "4.0.0",
"max" : null
},
"xml_get_current_line_number" : {
"min" : "4.0.0",
"max" : null
},
"xml_get_error_code" : {
"min" : "4.0.0",
"max" : null
},
"xml_parse" : {
"min" : "4.0.0",
"max" : null
},
"xml_parse_into_struct" : {
"min" : "4.0.0",
"max" : null
},
"xml_parser_create" : {
"min" : "4.0.0",
"max" : null
},
"xml_parser_create_ns" : {
"min" : "4.0.5",
"max" : null
},
"xml_parser_free" : {
"min" : "4.0.0",
"max" : null
},
"xml_parser_get_option" : {
"min" : "4.0.0",
"max" : null
},
"xml_parser_set_option" : {
"min" : "4.0.0",
"max" : null
},
"xml_set_character_data_handler" : {
"min" : "4.0.0",
"max" : null
},
"xml_set_default_handler" : {
"min" : "4.0.0",
"max" : null
},
"xml_set_element_handler" : {
"min" : "4.0.0",
"max" : null
},
"xml_set_end_namespace_decl_handler" : {
"min" : "4.0.5",
"max" : null
},
"xml_set_external_entity_ref_handler" : {
"min" : "4.0.0",
"max" : null
},
"xml_set_notation_decl_handler" : {
"min" : "4.0.0",
"max" : null
},
"xml_set_object" : {
"min" : "4.0.0",
"max" : null
},
"xml_set_processing_instruction_handler" : {
"min" : "4.0.0",
"max" : null
},
"xml_set_start_namespace_decl_handler" : {
"min" : "4.0.5",
"max" : null
},
"xml_set_unparsed_entity_decl_handler" : {
"min" : "4.0.0",
"max" : null
},
"xmlwriter_end_attribute" : {
"min" : "5.1.2",
"max" : null
},
"xmlwriter_end_cdata" : {
"min" : "5.1.2",
"max" : null
},
"xmlwriter_end_comment" : {
"min" : "5.1.2",
"max" : null
},
"xmlwriter_end_document" : {
"min" : "5.1.2",
"max" : null
},
"xmlwriter_end_dtd" : {
"min" : "5.1.2",
"max" : null
},
"xmlwriter_end_dtd_attlist" : {
"min" : "5.1.2",
"max" : null
},
"xmlwriter_end_dtd_element" : {
"min" : "5.1.2",
"max" : null
},
"xmlwriter_end_dtd_entity" : {
"min" : "5.1.2",
"max" : null
},
"xmlwriter_end_element" : {
"min" : "5.1.2",
"max" : null
},
"xmlwriter_end_pi" : {
"min" : "5.1.2",
"max" : null
},
"xmlwriter_flush" : {
"min" : "5.1.2",
"max" : null
},
"xmlwriter_full_end_element" : {
"min" : "5.2.0",
"max" : null
},
"xmlwriter_open_memory" : {
"min" : "5.1.2",
"max" : null
},
"xmlwriter_open_uri" : {
"min" : "5.1.2",
"max" : null
},
"xmlwriter_output_memory" : {
"min" : "5.1.2",
"max" : null
},
"xmlwriter_set_indent" : {
"min" : "5.1.2",
"max" : null
},
"xmlwriter_set_indent_string" : {
"min" : "5.1.2",
"max" : null
},
"xmlwriter_start_attribute" : {
"min" : "5.1.2",
"max" : null
},
"xmlwriter_start_attribute_ns" : {
"min" : "5.1.2",
"max" : null
},
"xmlwriter_start_cdata" : {
"min" : "5.1.2",
"max" : null
},
"xmlwriter_start_comment" : {
"min" : "5.1.2",
"max" : null
},
"xmlwriter_start_document" : {
"min" : "5.1.2",
"max" : null
},
"xmlwriter_start_dtd" : {
"min" : "5.1.2",
"max" : null
},
"xmlwriter_start_dtd_attlist" : {
"min" : "5.1.2",
"max" : null
},
"xmlwriter_start_dtd_element" : {
"min" : "5.1.2",
"max" : null
},
"xmlwriter_start_dtd_entity" : {
"min" : "5.1.2",
"max" : null
},
"xmlwriter_start_element" : {
"min" : "5.1.2",
"max" : null
},
"xmlwriter_start_element_ns" : {
"min" : "5.1.2",
"max" : null
},
"xmlwriter_start_pi" : {
"min" : "5.1.2",
"max" : null
},
"xmlwriter_text" : {
"min" : "5.1.2",
"max" : null
},
"xmlwriter_write_attribute" : {
"min" : "5.1.2",
"max" : null
},
"xmlwriter_write_attribute_ns" : {
"min" : "5.1.2",
"max" : null
},
"xmlwriter_write_cdata" : {
"min" : "5.1.2",
"max" : null
},
"xmlwriter_write_comment" : {
"min" : "5.1.2",
"max" : null
},
"xmlwriter_write_dtd" : {
"min" : "5.1.2",
"max" : null
},
"xmlwriter_write_dtd_attlist" : {
"min" : "5.1.2",
"max" : null
},
"xmlwriter_write_dtd_element" : {
"min" : "5.1.2",
"max" : null
},
"xmlwriter_write_dtd_entity" : {
"min" : "5.1.2",
"max" : null
},
"xmlwriter_write_element" : {
"min" : "5.1.2",
"max" : null
},
"xmlwriter_write_element_ns" : {
"min" : "5.1.2",
"max" : null
},
"xmlwriter_write_pi" : {
"min" : "5.1.2",
"max" : null
},
"xmlwriter_write_raw" : {
"min" : "5.2.0",
"max" : null
},
"yaml_emit" : {
"min" : "5.2.0",
"max" : null
},
"yaml_emit_file" : {
"min" : "5.2.0",
"max" : null
},
"yaml_parse" : {
"min" : "5.2.0",
"max" : null
},
"yaml_parse_file" : {
"min" : "5.2.0",
"max" : null
},
"yaml_parse_url" : {
"min" : "5.2.0",
"max" : null
},
"zend_logo_guid" : {
"min" : "4.0.0",
"max" : "5.4.30RC1"
},
"zend_thread_id" : {
"min" : "5.0.0",
"max" : null
},
"zend_version" : {
"min" : "4.0.0",
"max" : null
}
},
"classes" : {
"APCIterator" : {
"min" : "5.1.0",
"max" : null
},
"AppendIterator" : {
"min" : "5.1.0",
"max" : null
},
"ArrayIterator" : {
"min" : "5.0.0",
"max" : null
},
"ArrayObject" : {
"min" : "5.0.0",
"max" : null
},
"BadFunctionCallException" : {
"min" : "5.1.0",
"max" : null
},
"BadMethodCallException" : {
"min" : "5.1.0",
"max" : null
},
"CURLFile" : {
"min" : "5.5.0",
"max" : null
},
"CachingIterator" : {
"min" : "5.0.0",
"max" : null
},
"CallbackFilterIterator" : {
"min" : "5.4.0",
"max" : null
},
"Closure" : {
"min" : "5.3.0",
"max" : null
},
"Collator" : {
"min" : "5.2.0",
"max" : null
},
"DateInterval" : {
"min" : "5.3.0",
"max" : null
},
"DatePeriod" : {
"min" : "5.3.0",
"max" : null
},
"DateTime" : {
"min" : "5.2.0",
"max" : null
},
"DateTimeImmutable" : {
"min" : "5.5.0",
"max" : null
},
"DateTimeZone" : {
"min" : "5.2.0",
"max" : null
},
"Directory" : {
"min" : "4.0.0",
"max" : null
},
"DirectoryIterator" : {
"min" : "5.0.0",
"max" : null
},
"DomainException" : {
"min" : "5.1.0",
"max" : null
},
"EmptyIterator" : {
"min" : "5.1.0",
"max" : null
},
"ErrorException" : {
"min" : "5.1.0",
"max" : null
},
"Exception" : {
"min" : "5.1.0",
"max" : null
},
"FilesystemIterator" : {
"min" : "5.3.0",
"max" : null
},
"FilterIterator" : {
"min" : "5.1.0",
"max" : null
},
"Generator" : {
"min" : "5.5.0",
"max" : null
},
"GlobIterator" : {
"min" : "5.3.0",
"max" : null
},
"Imagick" : {
"min" : "5.1.3",
"max" : null
},
"ImagickDraw" : {
"min" : "5.1.3",
"max" : null
},
"ImagickDrawException" : {
"min" : "5.1.3",
"max" : null
},
"ImagickException" : {
"min" : "5.1.3",
"max" : null
},
"ImagickPixel" : {
"min" : "5.1.3",
"max" : null
},
"ImagickPixelException" : {
"min" : "5.1.3",
"max" : null
},
"ImagickPixelIterator" : {
"min" : "5.1.3",
"max" : null
},
"ImagickPixelIteratorException" : {
"min" : "5.1.3",
"max" : null
},
"InfiniteIterator" : {
"min" : "5.1.0",
"max" : null
},
"IntlBreakIterator" : {
"min" : "5.5.0",
"max" : null
},
"IntlCalendar" : {
"min" : "5.5.0",
"max" : null
},
"IntlCodePointBreakIterator" : {
"min" : "5.5.0",
"max" : null
},
"IntlDateFormatter" : {
"min" : "5.2.4",
"max" : null
},
"IntlException" : {
"min" : "5.2.0",
"max" : null
},
"IntlGregorianCalendar" : {
"min" : "5.5.0",
"max" : null
},
"IntlIterator" : {
"min" : "5.5.0",
"max" : null
},
"IntlPartsIterator" : {
"min" : "5.5.0",
"max" : null
},
"IntlRuleBasedBreakIterator" : {
"min" : "5.5.0",
"max" : null
},
"IntlTimeZone" : {
"min" : "5.5.0",
"max" : null
},
"InvalidArgumentException" : {
"min" : "5.1.0",
"max" : null
},
"IteratorIterator" : {
"min" : "5.1.0",
"max" : null
},
"LengthException" : {
"min" : "5.1.0",
"max" : null
},
"LibXMLError" : {
"min" : "5.1.0",
"max" : null
},
"LimitIterator" : {
"min" : "5.1.0",
"max" : null
},
"Locale" : {
"min" : "5.2.0",
"max" : null
},
"LogicException" : {
"min" : "5.1.0",
"max" : null
},
"MessageFormatter" : {
"min" : "5.2.0",
"max" : null
},
"MultipleIterator" : {
"min" : "5.3.0",
"max" : null
},
"NoRewindIterator" : {
"min" : "5.1.0",
"max" : null
},
"Normalizer" : {
"min" : "5.2.0",
"max" : null
},
"NumberFormatter" : {
"min" : "5.2.0",
"max" : null
},
"OutOfBoundsException" : {
"min" : "5.1.0",
"max" : null
},
"OutOfRangeException" : {
"min" : "5.1.0",
"max" : null
},
"OverflowException" : {
"min" : "5.1.0",
"max" : null
},
"PDO" : {
"min" : "5.1.0",
"max" : null
},
"PDOException" : {
"min" : "5.1.0",
"max" : null
},
"PDORow" : {
"min" : "5.1.0",
"max" : null
},
"PDOStatement" : {
"min" : "5.1.0",
"max" : null
},
"ParentIterator" : {
"min" : "5.1.0",
"max" : null
},
"Phar" : {
"min" : "5.2.0",
"max" : null
},
"PharData" : {
"min" : "5.2.0",
"max" : null
},
"PharException" : {
"min" : "5.2.0",
"max" : null
},
"PharFileInfo" : {
"min" : "5.2.0",
"max" : null
},
"RangeException" : {
"min" : "5.1.0",
"max" : null
},
"RecursiveArrayIterator" : {
"min" : "5.1.0",
"max" : null
},
"RecursiveCachingIterator" : {
"min" : "5.1.0",
"max" : null
},
"RecursiveCallbackFilterIterator" : {
"min" : "5.4.0",
"max" : null
},
"RecursiveDirectoryIterator" : {
"min" : "5.1.2",
"max" : null
},
"RecursiveFilterIterator" : {
"min" : "5.1.0",
"max" : null
},
"RecursiveIteratorIterator" : {
"min" : "5.1.3",
"max" : null
},
"RecursiveRegexIterator" : {
"min" : "5.2.0",
"max" : null
},
"RecursiveTreeIterator" : {
"min" : "5.3.0",
"max" : null
},
"Reflection" : {
"min" : "5.0.0",
"max" : null
},
"ReflectionClass" : {
"min" : "5.0.0",
"max" : null
},
"ReflectionException" : {
"min" : "5.0.0",
"max" : null
},
"ReflectionExtension" : {
"min" : "5.0.0",
"max" : null
},
"ReflectionFunction" : {
"min" : "5.0.0",
"max" : null
},
"ReflectionFunctionAbstract" : {
"min" : "5.0.0",
"max" : null
},
"ReflectionMethod" : {
"min" : "5.0.0",
"max" : null
},
"ReflectionObject" : {
"min" : "5.0.0",
"max" : null
},
"ReflectionParameter" : {
"min" : "5.0.0",
"max" : null
},
"ReflectionProperty" : {
"min" : "5.0.0",
"max" : null
},
"ReflectionZendExtension" : {
"min" : "5.4.0",
"max" : null
},
"RegexIterator" : {
"min" : "5.2.0",
"max" : null
},
"ResourceBundle" : {
"min" : "5.2.4",
"max" : null
},
"RuntimeException" : {
"min" : "5.1.0",
"max" : null
},
"SimpleXMLElement" : {
"min" : "5.0.1",
"max" : null
},
"SimpleXMLIterator" : {
"min" : "5.1.0",
"max" : null
},
"SplDoublyLinkedList" : {
"min" : "5.3.0",
"max" : null
},
"SplFileInfo" : {
"min" : "5.1.2",
"max" : null
},
"SplFileObject" : {
"min" : "5.1.0",
"max" : null
},
"SplFixedArray" : {
"min" : "5.3.0",
"max" : null
},
"SplHeap" : {
"min" : "5.3.0",
"max" : null
},
"SplMaxHeap" : {
"min" : "5.3.0",
"max" : null
},
"SplMinHeap" : {
"min" : "5.3.0",
"max" : null
},
"SplObjectStorage" : {
"min" : "5.1.0",
"max" : null
},
"SplPriorityQueue" : {
"min" : "5.3.0",
"max" : null
},
"SplQueue" : {
"min" : "5.3.0",
"max" : null
},
"SplStack" : {
"min" : "5.3.0",
"max" : null
},
"SplTempFileObject" : {
"min" : "5.1.2",
"max" : null
},
"Spoofchecker" : {
"min" : "5.4.0",
"max" : null
},
"Transliterator" : {
"min" : "5.4.0",
"max" : null
},
"UConverter" : {
"min" : "5.5.0",
"max" : null
},
"UnderflowException" : {
"min" : "5.1.0",
"max" : null
},
"UnexpectedValueException" : {
"min" : "5.1.0",
"max" : null
},
"XMLReader" : {
"min" : "5.0.0",
"max" : null
},
"XMLWriter" : {
"min" : "5.1.2",
"max" : null
},
"__PHP_Incomplete_Class" : {
"min" : "4.0.0",
"max" : null
},
"finfo" : {
"min" : "4.0.0",
"max" : null
},
"http\\Client" : {
"min" : "5.3.0",
"max" : null
},
"http\\Client\\Request" : {
"min" : "5.3.0",
"max" : null
},
"http\\Client\\Response" : {
"min" : "5.3.0",
"max" : null
},
"http\\Cookie" : {
"min" : "5.3.0",
"max" : null
},
"http\\Encoding\\Stream" : {
"min" : "5.3.0",
"max" : null
},
"http\\Encoding\\Stream\\Dechunk" : {
"min" : "5.3.0",
"max" : null
},
"http\\Encoding\\Stream\\Deflate" : {
"min" : "5.3.0",
"max" : null
},
"http\\Encoding\\Stream\\Inflate" : {
"min" : "5.3.0",
"max" : null
},
"http\\Env" : {
"min" : "5.3.0",
"max" : null
},
"http\\Env\\Request" : {
"min" : "5.3.0",
"max" : null
},
"http\\Env\\Response" : {
"min" : "5.3.0",
"max" : null
},
"http\\Exception\\BadConversionException" : {
"min" : "5.3.0",
"max" : null
},
"http\\Exception\\BadHeaderException" : {
"min" : "5.3.0",
"max" : null
},
"http\\Exception\\BadMessageException" : {
"min" : "5.3.0",
"max" : null
},
"http\\Exception\\BadMethodCallException" : {
"min" : "5.3.0",
"max" : null
},
"http\\Exception\\BadQueryStringException" : {
"min" : "5.3.0",
"max" : null
},
"http\\Exception\\BadUrlException" : {
"min" : "5.3.0",
"max" : null
},
"http\\Exception\\InvalidArgumentException" : {
"min" : "5.3.0",
"max" : null
},
"http\\Exception\\RuntimeException" : {
"min" : "5.3.0",
"max" : null
},
"http\\Exception\\UnexpectedValueException" : {
"min" : "5.3.0",
"max" : null
},
"http\\Header" : {
"min" : "5.3.0",
"max" : null
},
"http\\Message" : {
"min" : "5.3.0",
"max" : null
},
"http\\Message\\Body" : {
"min" : "5.3.0",
"max" : null
},
"http\\Params" : {
"min" : "5.3.0",
"max" : null
},
"http\\QueryString" : {
"min" : "5.3.0",
"max" : null
},
"http\\Url" : {
"min" : "5.3.0",
"max" : null
},
"mysqli" : {
"min" : "5.0.0",
"max" : null
},
"mysqli_driver" : {
"min" : "5.0.0",
"max" : null
},
"mysqli_result" : {
"min" : "5.0.0",
"max" : null
},
"mysqli_sql_exception" : {
"min" : "5.0.0",
"max" : null
},
"mysqli_stmt" : {
"min" : "5.0.0",
"max" : null
},
"mysqli_warning" : {
"min" : "5.0.0",
"max" : null
},
"php_user_filter" : {
"min" : "5.0.0",
"max" : null
},
"stdClass" : {
"min" : "4.0.0",
"max" : null
}
},
"interfaces" : {
"ArrayAccess" : {
"min" : "5.1.0",
"max" : null
},
"Countable" : {
"min" : "5.1.0",
"max" : null
},
"DateTimeInterface" : {
"min" : "5.5.0",
"max" : null
},
"Iterator" : {
"min" : "5.1.0",
"max" : null
},
"IteratorAggregate" : {
"min" : "5.1.0",
"max" : null
},
"JsonSerializable" : {
"min" : "5.4.0",
"max" : null
},
"OuterIterator" : {
"min" : "5.1.0",
"max" : null
},
"RecursiveIterator" : {
"min" : "5.1.0",
"max" : null
},
"Reflector" : {
"min" : "5.0.0",
"max" : null
},
"SeekableIterator" : {
"min" : "5.1.0",
"max" : null
},
"Serializable" : {
"min" : "5.1.0",
"max" : null
},
"SplObserver" : {
"min" : "5.1.0",
"max" : null
},
"SplSubject" : {
"min" : "5.1.0",
"max" : null
},
"Traversable" : {
"min" : "5.1.0",
"max" : null
},
"http\\Exception" : {
"min" : "5.3.0",
"max" : null
}
},
+ "constants" : {
+ "ABDAY_1" : {
+ "min" : "4.1.0",
+ "max" : null
+ },
+ "ABDAY_2" : {
+ "min" : "4.1.0",
+ "max" : null
+ },
+ "ABDAY_3" : {
+ "min" : "4.1.0",
+ "max" : null
+ },
+ "ABDAY_4" : {
+ "min" : "4.1.0",
+ "max" : null
+ },
+ "ABDAY_5" : {
+ "min" : "4.1.0",
+ "max" : null
+ },
+ "ABDAY_6" : {
+ "min" : "4.1.0",
+ "max" : null
+ },
+ "ABDAY_7" : {
+ "min" : "4.1.0",
+ "max" : null
+ },
+ "ABMON_1" : {
+ "min" : "4.1.0",
+ "max" : null
+ },
+ "ABMON_10" : {
+ "min" : "4.1.0",
+ "max" : null
+ },
+ "ABMON_11" : {
+ "min" : "4.1.0",
+ "max" : null
+ },
+ "ABMON_12" : {
+ "min" : "4.1.0",
+ "max" : null
+ },
+ "ABMON_2" : {
+ "min" : "4.1.0",
+ "max" : null
+ },
+ "ABMON_3" : {
+ "min" : "4.1.0",
+ "max" : null
+ },
+ "ABMON_4" : {
+ "min" : "4.1.0",
+ "max" : null
+ },
+ "ABMON_5" : {
+ "min" : "4.1.0",
+ "max" : null
+ },
+ "ABMON_6" : {
+ "min" : "4.1.0",
+ "max" : null
+ },
+ "ABMON_7" : {
+ "min" : "4.1.0",
+ "max" : null
+ },
+ "ABMON_8" : {
+ "min" : "4.1.0",
+ "max" : null
+ },
+ "ABMON_9" : {
+ "min" : "4.1.0",
+ "max" : null
+ },
+ "ALT_DIGITS" : {
+ "min" : "4.1.0",
+ "max" : null
+ },
+ "AM_STR" : {
+ "min" : "4.1.0",
+ "max" : null
+ },
+ "APC_BIN_VERIFY_CRC32" : {
+ "min" : "5.1.0",
+ "max" : null
+ },
+ "APC_BIN_VERIFY_MD5" : {
+ "min" : "5.1.0",
+ "max" : null
+ },
+ "APC_ITER_ALL" : {
+ "min" : "5.1.0",
+ "max" : null
+ },
+ "APC_ITER_ATIME" : {
+ "min" : "5.1.0",
+ "max" : null
+ },
+ "APC_ITER_CTIME" : {
+ "min" : "5.1.0",
+ "max" : null
+ },
+ "APC_ITER_DEVICE" : {
+ "min" : "5.1.0",
+ "max" : null
+ },
+ "APC_ITER_DTIME" : {
+ "min" : "5.1.0",
+ "max" : null
+ },
+ "APC_ITER_FILENAME" : {
+ "min" : "5.1.0",
+ "max" : null
+ },
+ "APC_ITER_INODE" : {
+ "min" : "5.1.0",
+ "max" : null
+ },
+ "APC_ITER_KEY" : {
+ "min" : "5.1.0",
+ "max" : null
+ },
+ "APC_ITER_MD5" : {
+ "min" : "5.1.0",
+ "max" : null
+ },
+ "APC_ITER_MEM_SIZE" : {
+ "min" : "5.1.0",
+ "max" : null
+ },
+ "APC_ITER_MTIME" : {
+ "min" : "5.1.0",
+ "max" : null
+ },
+ "APC_ITER_NONE" : {
+ "min" : "5.1.0",
+ "max" : null
+ },
+ "APC_ITER_NUM_HITS" : {
+ "min" : "5.1.0",
+ "max" : null
+ },
+ "APC_ITER_REFCOUNT" : {
+ "min" : "5.1.0",
+ "max" : null
+ },
+ "APC_ITER_TTL" : {
+ "min" : "5.1.0",
+ "max" : null
+ },
+ "APC_ITER_TYPE" : {
+ "min" : "5.1.0",
+ "max" : null
+ },
+ "APC_ITER_VALUE" : {
+ "min" : "5.1.0",
+ "max" : null
+ },
+ "APC_LIST_ACTIVE" : {
+ "min" : "5.1.0",
+ "max" : null
+ },
+ "APC_LIST_DELETED" : {
+ "min" : "5.1.0",
+ "max" : null
+ },
+ "ASSERT_ACTIVE" : {
+ "min" : "4.0.0",
+ "max" : null
+ },
+ "ASSERT_BAIL" : {
+ "min" : "4.0.0",
+ "max" : null
+ },
+ "ASSERT_CALLBACK" : {
+ "min" : "4.0.0",
+ "max" : null
+ },
+ "ASSERT_QUIET_EVAL" : {
+ "min" : "4.0.0",
+ "max" : null
+ },
+ "ASSERT_WARNING" : {
+ "min" : "4.0.0",
+ "max" : null
+ },
+ "BUS_ADRALN" : {
+ "min" : "5.3.0",
+ "max" : null
+ },
+ "BUS_ADRERR" : {
+ "min" : "5.3.0",
+ "max" : null
+ },
+ "BUS_OBJERR" : {
+ "min" : "5.3.0",
+ "max" : null
+ },
+ "CASE_LOWER" : {
+ "min" : "4.0.0",
+ "max" : null
+ },
+ "CASE_UPPER" : {
+ "min" : "4.0.0",
+ "max" : null
+ },
+ "CHAR_MAX" : {
+ "min" : "4.0.0",
+ "max" : null
+ },
+ "CLD_CONTINUED" : {
+ "min" : "5.3.0",
+ "max" : null
+ },
+ "CLD_DUMPED" : {
+ "min" : "5.3.0",
+ "max" : null
+ },
+ "CLD_EXITED" : {
+ "min" : "5.3.0",
+ "max" : null
+ },
+ "CLD_KILLED" : {
+ "min" : "5.3.0",
+ "max" : null
+ },
+ "CLD_STOPPED" : {
+ "min" : "5.3.0",
+ "max" : null
+ },
+ "CLD_TRAPPED" : {
+ "min" : "5.3.0",
+ "max" : null
+ },
+ "CODESET" : {
+ "min" : "4.1.0",
+ "max" : null
+ },
+ "CONNECTION_ABORTED" : {
+ "min" : "4.0.0",
+ "max" : null
+ },
+ "CONNECTION_NORMAL" : {
+ "min" : "4.0.0",
+ "max" : null
+ },
+ "CONNECTION_TIMEOUT" : {
+ "min" : "4.0.0",
+ "max" : null
+ },
+ "COUNT_NORMAL" : {
+ "min" : "4.0.0",
+ "max" : null
+ },
+ "COUNT_RECURSIVE" : {
+ "min" : "4.0.0",
+ "max" : null
+ },
+ "CREDITS_ALL" : {
+ "min" : "4.0.0",
+ "max" : null
+ },
+ "CREDITS_DOCS" : {
+ "min" : "4.0.0",
+ "max" : null
+ },
+ "CREDITS_FULLPAGE" : {
+ "min" : "4.0.0",
+ "max" : null
+ },
+ "CREDITS_GENERAL" : {
+ "min" : "4.0.0",
+ "max" : null
+ },
+ "CREDITS_GROUP" : {
+ "min" : "4.0.0",
+ "max" : null
+ },
+ "CREDITS_MODULES" : {
+ "min" : "4.0.0",
+ "max" : null
+ },
+ "CREDITS_QA" : {
+ "min" : "4.0.0",
+ "max" : null
+ },
+ "CREDITS_SAPI" : {
+ "min" : "4.0.0",
+ "max" : null
+ },
+ "CRNCYSTR" : {
+ "min" : "4.1.0",
+ "max" : null
+ },
+ "CRYPT_BLOWFISH" : {
+ "min" : "4.0.0",
+ "max" : null
+ },
+ "CRYPT_EXT_DES" : {
+ "min" : "4.0.0",
+ "max" : null
+ },
+ "CRYPT_MD5" : {
+ "min" : "4.0.0",
+ "max" : null
+ },
+ "CRYPT_SALT_LENGTH" : {
+ "min" : "4.0.0",
+ "max" : null
+ },
+ "CRYPT_SHA256" : {
+ "min" : "5.3.2",
+ "max" : null
+ },
+ "CRYPT_SHA512" : {
+ "min" : "5.3.2",
+ "max" : null
+ },
+ "CRYPT_STD_DES" : {
+ "min" : "4.0.0",
+ "max" : null
+ },
+ "CURLAUTH_ANY" : {
+ "min" : "4.0.2",
+ "max" : null
+ },
+ "CURLAUTH_ANYSAFE" : {
+ "min" : "4.0.2",
+ "max" : null
+ },
+ "CURLAUTH_BASIC" : {
+ "min" : "4.0.2",
+ "max" : null
+ },
+ "CURLAUTH_DIGEST" : {
+ "min" : "4.0.2",
+ "max" : null
+ },
+ "CURLAUTH_DIGEST_IE" : {
+ "min" : "5.5.0",
+ "max" : null
+ },
+ "CURLAUTH_GSSNEGOTIATE" : {
+ "min" : "4.0.2",
+ "max" : null
+ },
+ "CURLAUTH_NONE" : {
+ "min" : "5.5.0",
+ "max" : null
+ },
+ "CURLAUTH_NTLM" : {
+ "min" : "4.0.2",
+ "max" : null
+ },
+ "CURLAUTH_ONLY" : {
+ "min" : "5.5.0",
+ "max" : null
+ },
+ "CURLCLOSEPOLICY_CALLBACK" : {
+ "min" : "4.0.2",
+ "max" : "5.5.14RC1"
+ },
+ "CURLCLOSEPOLICY_LEAST_RECENTLY_USED" : {
+ "min" : "4.0.2",
+ "max" : "5.5.14RC1"
+ },
+ "CURLCLOSEPOLICY_LEAST_TRAFFIC" : {
+ "min" : "4.0.2",
+ "max" : "5.5.14RC1"
+ },
+ "CURLCLOSEPOLICY_OLDEST" : {
+ "min" : "4.0.2",
+ "max" : "5.5.14RC1"
+ },
+ "CURLCLOSEPOLICY_SLOWEST" : {
+ "min" : "4.0.2",
+ "max" : "5.5.14RC1"
+ },
+ "CURLE_ABORTED_BY_CALLBACK" : {
+ "min" : "4.0.2",
+ "max" : null
+ },
+ "CURLE_BAD_CALLING_ORDER" : {
+ "min" : "4.0.2",
+ "max" : null
+ },
+ "CURLE_BAD_CONTENT_ENCODING" : {
+ "min" : "4.0.2",
+ "max" : null
+ },
+ "CURLE_BAD_DOWNLOAD_RESUME" : {
+ "min" : "5.5.0",
+ "max" : null
+ },
+ "CURLE_BAD_FUNCTION_ARGUMENT" : {
+ "min" : "4.0.2",
+ "max" : null
+ },
+ "CURLE_BAD_PASSWORD_ENTERED" : {
+ "min" : "4.0.2",
+ "max" : null
+ },
+ "CURLE_COULDNT_CONNECT" : {
+ "min" : "4.0.2",
+ "max" : null
+ },
+ "CURLE_COULDNT_RESOLVE_HOST" : {
+ "min" : "4.0.2",
+ "max" : null
+ },
+ "CURLE_COULDNT_RESOLVE_PROXY" : {
+ "min" : "4.0.2",
+ "max" : null
+ },
+ "CURLE_FAILED_INIT" : {
+ "min" : "4.0.2",
+ "max" : null
+ },
+ "CURLE_FILESIZE_EXCEEDED" : {
+ "min" : "4.0.2",
+ "max" : null
+ },
+ "CURLE_FILE_COULDNT_READ_FILE" : {
+ "min" : "4.0.2",
+ "max" : null
+ },
+ "CURLE_FTP_ACCESS_DENIED" : {
+ "min" : "4.0.2",
+ "max" : null
+ },
+ "CURLE_FTP_BAD_DOWNLOAD_RESUME" : {
+ "min" : "4.0.2",
+ "max" : null
+ },
+ "CURLE_FTP_CANT_GET_HOST" : {
+ "min" : "4.0.2",
+ "max" : null
+ },
+ "CURLE_FTP_CANT_RECONNECT" : {
+ "min" : "4.0.2",
+ "max" : null
+ },
+ "CURLE_FTP_COULDNT_GET_SIZE" : {
+ "min" : "4.0.2",
+ "max" : null
+ },
+ "CURLE_FTP_COULDNT_RETR_FILE" : {
+ "min" : "4.0.2",
+ "max" : null
+ },
+ "CURLE_FTP_COULDNT_SET_ASCII" : {
+ "min" : "4.0.2",
+ "max" : null
+ },
+ "CURLE_FTP_COULDNT_SET_BINARY" : {
+ "min" : "4.0.2",
+ "max" : null
+ },
+ "CURLE_FTP_COULDNT_STOR_FILE" : {
+ "min" : "4.0.2",
+ "max" : null
+ },
+ "CURLE_FTP_COULDNT_USE_REST" : {
+ "min" : "4.0.2",
+ "max" : null
+ },
+ "CURLE_FTP_PARTIAL_FILE" : {
+ "min" : "5.5.0",
+ "max" : null
+ },
+ "CURLE_FTP_PORT_FAILED" : {
+ "min" : "4.0.2",
+ "max" : null
+ },
+ "CURLE_FTP_QUOTE_ERROR" : {
+ "min" : "4.0.2",
+ "max" : null
+ },
+ "CURLE_FTP_SSL_FAILED" : {
+ "min" : "4.0.2",
+ "max" : null
+ },
+ "CURLE_FTP_USER_PASSWORD_INCORRECT" : {
+ "min" : "4.0.2",
+ "max" : null
+ },
+ "CURLE_FTP_WEIRD_227_FORMAT" : {
+ "min" : "4.0.2",
+ "max" : null
+ },
+ "CURLE_FTP_WEIRD_PASS_REPLY" : {
+ "min" : "4.0.2",
+ "max" : null
+ },
+ "CURLE_FTP_WEIRD_PASV_REPLY" : {
+ "min" : "4.0.2",
+ "max" : null
+ },
+ "CURLE_FTP_WEIRD_SERVER_REPLY" : {
+ "min" : "4.0.2",
+ "max" : null
+ },
+ "CURLE_FTP_WEIRD_USER_REPLY" : {
+ "min" : "4.0.2",
+ "max" : null
+ },
+ "CURLE_FTP_WRITE_ERROR" : {
+ "min" : "4.0.2",
+ "max" : null
+ },
+ "CURLE_FUNCTION_NOT_FOUND" : {
+ "min" : "4.0.2",
+ "max" : null
+ },
+ "CURLE_GOT_NOTHING" : {
+ "min" : "4.0.2",
+ "max" : null
+ },
+ "CURLE_HTTP_NOT_FOUND" : {
+ "min" : "4.0.2",
+ "max" : null
+ },
+ "CURLE_HTTP_PORT_FAILED" : {
+ "min" : "4.0.2",
+ "max" : null
+ },
+ "CURLE_HTTP_POST_ERROR" : {
+ "min" : "4.0.2",
+ "max" : null
+ },
+ "CURLE_HTTP_RANGE_ERROR" : {
+ "min" : "4.0.2",
+ "max" : null
+ },
+ "CURLE_HTTP_RETURNED_ERROR" : {
+ "min" : "5.5.0",
+ "max" : null
+ },
+ "CURLE_LDAP_CANNOT_BIND" : {
+ "min" : "4.0.2",
+ "max" : null
+ },
+ "CURLE_LDAP_INVALID_URL" : {
+ "min" : "4.0.2",
+ "max" : null
+ },
+ "CURLE_LDAP_SEARCH_FAILED" : {
+ "min" : "4.0.2",
+ "max" : null
+ },
+ "CURLE_LIBRARY_NOT_FOUND" : {
+ "min" : "4.0.2",
+ "max" : null
+ },
+ "CURLE_MALFORMAT_USER" : {
+ "min" : "4.0.2",
+ "max" : null
+ },
+ "CURLE_OBSOLETE" : {
+ "min" : "4.0.2",
+ "max" : null
+ },
+ "CURLE_OK" : {
+ "min" : "4.0.2",
+ "max" : null
+ },
+ "CURLE_OPERATION_TIMEDOUT" : {
+ "min" : "5.5.0",
+ "max" : null
+ },
+ "CURLE_OPERATION_TIMEOUTED" : {
+ "min" : "4.0.2",
+ "max" : null
+ },
+ "CURLE_OUT_OF_MEMORY" : {
+ "min" : "4.0.2",
+ "max" : null
+ },
+ "CURLE_PARTIAL_FILE" : {
+ "min" : "4.0.2",
+ "max" : null
+ },
+ "CURLE_READ_ERROR" : {
+ "min" : "4.0.2",
+ "max" : null
+ },
+ "CURLE_RECV_ERROR" : {
+ "min" : "4.0.2",
+ "max" : null
+ },
+ "CURLE_SEND_ERROR" : {
+ "min" : "4.0.2",
+ "max" : null
+ },
+ "CURLE_SHARE_IN_USE" : {
+ "min" : "4.0.2",
+ "max" : null
+ },
+ "CURLE_SSH" : {
+ "min" : "5.3.0",
+ "max" : null
+ },
+ "CURLE_SSL_CACERT" : {
+ "min" : "4.0.2",
+ "max" : null
+ },
+ "CURLE_SSL_CERTPROBLEM" : {
+ "min" : "4.0.2",
+ "max" : null
+ },
+ "CURLE_SSL_CIPHER" : {
+ "min" : "4.0.2",
+ "max" : null
+ },
+ "CURLE_SSL_CONNECT_ERROR" : {
+ "min" : "4.0.2",
+ "max" : null
+ },
+ "CURLE_SSL_ENGINE_NOTFOUND" : {
+ "min" : "4.0.2",
+ "max" : null
+ },
+ "CURLE_SSL_ENGINE_SETFAILED" : {
+ "min" : "4.0.2",
+ "max" : null
+ },
+ "CURLE_SSL_PEER_CERTIFICATE" : {
+ "min" : "4.0.2",
+ "max" : null
+ },
+ "CURLE_TELNET_OPTION_SYNTAX" : {
+ "min" : "4.0.2",
+ "max" : null
+ },
+ "CURLE_TOO_MANY_REDIRECTS" : {
+ "min" : "4.0.2",
+ "max" : null
+ },
+ "CURLE_UNKNOWN_TELNET_OPTION" : {
+ "min" : "4.0.2",
+ "max" : null
+ },
+ "CURLE_UNSUPPORTED_PROTOCOL" : {
+ "min" : "4.0.2",
+ "max" : null
+ },
+ "CURLE_URL_MALFORMAT" : {
+ "min" : "4.0.2",
+ "max" : null
+ },
+ "CURLE_URL_MALFORMAT_USER" : {
+ "min" : "4.0.2",
+ "max" : null
+ },
+ "CURLE_WRITE_ERROR" : {
+ "min" : "4.0.2",
+ "max" : null
+ },
+ "CURLFTPAUTH_DEFAULT" : {
+ "min" : "5.1.0",
+ "max" : null
+ },
+ "CURLFTPAUTH_SSL" : {
+ "min" : "5.1.0",
+ "max" : null
+ },
+ "CURLFTPAUTH_TLS" : {
+ "min" : "5.1.0",
+ "max" : null
+ },
+ "CURLFTPMETHOD_MULTICWD" : {
+ "min" : "5.3.0",
+ "max" : null
+ },
+ "CURLFTPMETHOD_NOCWD" : {
+ "min" : "5.3.0",
+ "max" : null
+ },
+ "CURLFTPMETHOD_SINGLECWD" : {
+ "min" : "5.3.0",
+ "max" : null
+ },
+ "CURLFTPSSL_ALL" : {
+ "min" : "5.2.0",
+ "max" : null
+ },
+ "CURLFTPSSL_CCC_ACTIVE" : {
+ "min" : "5.5.0",
+ "max" : null
+ },
+ "CURLFTPSSL_CCC_NONE" : {
+ "min" : "5.5.0",
+ "max" : null
+ },
+ "CURLFTPSSL_CCC_PASSIVE" : {
+ "min" : "5.5.0",
+ "max" : null
+ },
+ "CURLFTPSSL_CONTROL" : {
+ "min" : "5.2.0",
+ "max" : null
+ },
+ "CURLFTPSSL_NONE" : {
+ "min" : "5.2.0",
+ "max" : null
+ },
+ "CURLFTPSSL_TRY" : {
+ "min" : "4.0.2",
+ "max" : null
+ },
+ "CURLGSSAPI_DELEGATION_FLAG" : {
+ "min" : "5.5.0",
+ "max" : null
+ },
+ "CURLGSSAPI_DELEGATION_POLICY_FLAG" : {
+ "min" : "5.5.0",
+ "max" : null
+ },
+ "CURLINFO_APPCONNECT_TIME" : {
+ "min" : "5.5.0",
+ "max" : null
+ },
+ "CURLINFO_CERTINFO" : {
+ "min" : "5.3.2",
+ "max" : null
+ },
+ "CURLINFO_CONDITION_UNMET" : {
+ "min" : "5.5.0",
+ "max" : null
+ },
+ "CURLINFO_CONNECT_TIME" : {
+ "min" : "4.0.2",
+ "max" : null
+ },
+ "CURLINFO_CONTENT_LENGTH_DOWNLOAD" : {
+ "min" : "4.0.2",
+ "max" : null
+ },
+ "CURLINFO_CONTENT_LENGTH_UPLOAD" : {
+ "min" : "4.0.2",
+ "max" : null
+ },
+ "CURLINFO_CONTENT_TYPE" : {
+ "min" : "4.0.2",
+ "max" : null
+ },
+ "CURLINFO_COOKIELIST" : {
+ "min" : "5.5.0",
+ "max" : null
+ },
+ "CURLINFO_EFFECTIVE_URL" : {
+ "min" : "4.0.2",
+ "max" : null
+ },
+ "CURLINFO_FILETIME" : {
+ "min" : "4.0.2",
+ "max" : null
+ },
+ "CURLINFO_FTP_ENTRY_PATH" : {
+ "min" : "5.5.0",
+ "max" : null
+ },
+ "CURLINFO_HEADER_OUT" : {
+ "min" : "5.1.3",
+ "max" : null
+ },
+ "CURLINFO_HEADER_SIZE" : {
+ "min" : "4.0.2",
+ "max" : null
+ },
+ "CURLINFO_HTTPAUTH_AVAIL" : {
+ "min" : "5.5.0",
+ "max" : null
+ },
+ "CURLINFO_HTTP_CODE" : {
+ "min" : "4.0.2",
+ "max" : null
+ },
+ "CURLINFO_HTTP_CONNECTCODE" : {
+ "min" : "5.5.0",
+ "max" : null
+ },
+ "CURLINFO_LASTONE" : {
+ "min" : "5.5.0",
+ "max" : null
+ },
+ "CURLINFO_LOCAL_IP" : {
+ "min" : "5.4.7",
+ "max" : null
+ },
+ "CURLINFO_LOCAL_PORT" : {
+ "min" : "5.4.7",
+ "max" : null
+ },
+ "CURLINFO_NAMELOOKUP_TIME" : {
+ "min" : "4.0.2",
+ "max" : null
+ },
+ "CURLINFO_NUM_CONNECTS" : {
+ "min" : "5.5.0",
+ "max" : null
+ },
+ "CURLINFO_OS_ERRNO" : {
+ "min" : "5.5.0",
+ "max" : null
+ },
+ "CURLINFO_PRETRANSFER_TIME" : {
+ "min" : "4.0.2",
+ "max" : null
+ },
+ "CURLINFO_PRIMARY_IP" : {
+ "min" : "5.4.7",
+ "max" : null
+ },
+ "CURLINFO_PRIMARY_PORT" : {
+ "min" : "5.4.7",
+ "max" : null
+ },
+ "CURLINFO_PRIVATE" : {
+ "min" : "5.2.4",
+ "max" : null
+ },
+ "CURLINFO_PROXYAUTH_AVAIL" : {
+ "min" : "5.5.0",
+ "max" : null
+ },
+ "CURLINFO_REDIRECT_COUNT" : {
+ "min" : "4.0.2",
+ "max" : null
+ },
+ "CURLINFO_REDIRECT_TIME" : {
+ "min" : "4.0.2",
+ "max" : null
+ },
+ "CURLINFO_REDIRECT_URL" : {
+ "min" : "5.3.7",
+ "max" : null
+ },
+ "CURLINFO_REQUEST_SIZE" : {
+ "min" : "4.0.2",
+ "max" : null
+ },
+ "CURLINFO_RESPONSE_CODE" : {
+ "min" : "5.5.0",
+ "max" : null
+ },
+ "CURLINFO_RTSP_CLIENT_CSEQ" : {
+ "min" : "5.5.0",
+ "max" : null
+ },
+ "CURLINFO_RTSP_CSEQ_RECV" : {
+ "min" : "5.5.0",
+ "max" : null
+ },
+ "CURLINFO_RTSP_SERVER_CSEQ" : {
+ "min" : "5.5.0",
+ "max" : null
+ },
+ "CURLINFO_RTSP_SESSION_ID" : {
+ "min" : "5.5.0",
+ "max" : null
+ },
+ "CURLINFO_SIZE_DOWNLOAD" : {
+ "min" : "4.0.2",
+ "max" : null
+ },
+ "CURLINFO_SIZE_UPLOAD" : {
+ "min" : "4.0.2",
+ "max" : null
+ },
+ "CURLINFO_SPEED_DOWNLOAD" : {
+ "min" : "4.0.2",
+ "max" : null
+ },
+ "CURLINFO_SPEED_UPLOAD" : {
+ "min" : "4.0.2",
+ "max" : null
+ },
+ "CURLINFO_SSL_ENGINES" : {
+ "min" : "5.5.0",
+ "max" : null
+ },
+ "CURLINFO_SSL_VERIFYRESULT" : {
+ "min" : "4.0.2",
+ "max" : null
+ },
+ "CURLINFO_STARTTRANSFER_TIME" : {
+ "min" : "4.0.2",
+ "max" : null
+ },
+ "CURLINFO_TOTAL_TIME" : {
+ "min" : "4.0.2",
+ "max" : null
+ },
+ "CURLMOPT_MAXCONNECTS" : {
+ "min" : "5.5.0",
+ "max" : null
+ },
+ "CURLMOPT_PIPELINING" : {
+ "min" : "5.5.0",
+ "max" : null
+ },
+ "CURLMSG_DONE" : {
+ "min" : "4.0.2",
+ "max" : null
+ },
+ "CURLM_BAD_EASY_HANDLE" : {
+ "min" : "4.0.2",
+ "max" : null
+ },
+ "CURLM_BAD_HANDLE" : {
+ "min" : "4.0.2",
+ "max" : null
+ },
+ "CURLM_CALL_MULTI_PERFORM" : {
+ "min" : "4.0.2",
+ "max" : null
+ },
+ "CURLM_INTERNAL_ERROR" : {
+ "min" : "4.0.2",
+ "max" : null
+ },
+ "CURLM_OK" : {
+ "min" : "4.0.2",
+ "max" : null
+ },
+ "CURLM_OUT_OF_MEMORY" : {
+ "min" : "4.0.2",
+ "max" : null
+ },
+ "CURLOPT_ACCEPTTIMEOUT_MS" : {
+ "min" : "5.5.0",
+ "max" : null
+ },
+ "CURLOPT_ACCEPT_ENCODING" : {
+ "min" : "5.5.0",
+ "max" : null
+ },
+ "CURLOPT_ADDRESS_SCOPE" : {
+ "min" : "5.5.0",
+ "max" : null
+ },
+ "CURLOPT_APPEND" : {
+ "min" : "5.5.0",
+ "max" : null
+ },
+ "CURLOPT_AUTOREFERER" : {
+ "min" : "5.1.0",
+ "max" : null
+ },
+ "CURLOPT_BINARYTRANSFER" : {
+ "min" : "4.0.2",
+ "max" : null
+ },
+ "CURLOPT_BUFFERSIZE" : {
+ "min" : "4.0.2",
+ "max" : null
+ },
+ "CURLOPT_CAINFO" : {
+ "min" : "4.0.2",
+ "max" : null
+ },
+ "CURLOPT_CAPATH" : {
+ "min" : "4.0.2",
+ "max" : null
+ },
+ "CURLOPT_CERTINFO" : {
+ "min" : "5.3.2",
+ "max" : null
+ },
+ "CURLOPT_CLOSEPOLICY" : {
+ "min" : "4.0.2",
+ "max" : "5.5.14RC1"
+ },
+ "CURLOPT_CONNECTTIMEOUT" : {
+ "min" : "4.0.2",
+ "max" : null
+ },
+ "CURLOPT_CONNECTTIMEOUT_MS" : {
+ "min" : "4.0.2",
+ "max" : null
+ },
+ "CURLOPT_CONNECT_ONLY" : {
+ "min" : "5.5.0",
+ "max" : null
+ },
+ "CURLOPT_COOKIE" : {
+ "min" : "4.0.2",
+ "max" : null
+ },
+ "CURLOPT_COOKIEFILE" : {
+ "min" : "4.0.2",
+ "max" : null
+ },
+ "CURLOPT_COOKIEJAR" : {
+ "min" : "4.0.2",
+ "max" : null
+ },
+ "CURLOPT_COOKIELIST" : {
+ "min" : "5.5.0",
+ "max" : null
+ },
+ "CURLOPT_COOKIESESSION" : {
+ "min" : "5.1.0",
+ "max" : null
+ },
+ "CURLOPT_CRLF" : {
+ "min" : "4.0.2",
+ "max" : null
+ },
+ "CURLOPT_CRLFILE" : {
+ "min" : "5.5.0",
+ "max" : null
+ },
+ "CURLOPT_CUSTOMREQUEST" : {
+ "min" : "4.0.2",
+ "max" : null
+ },
+ "CURLOPT_DIRLISTONLY" : {
+ "min" : "5.5.0",
+ "max" : null
+ },
+ "CURLOPT_DNS_CACHE_TIMEOUT" : {
+ "min" : "4.0.2",
+ "max" : null
+ },
+ "CURLOPT_DNS_SERVERS" : {
+ "min" : "5.5.0",
+ "max" : null
+ },
+ "CURLOPT_DNS_USE_GLOBAL_CACHE" : {
+ "min" : "4.0.2",
+ "max" : null
+ },
+ "CURLOPT_EGDSOCKET" : {
+ "min" : "4.0.2",
+ "max" : null
+ },
+ "CURLOPT_ENCODING" : {
+ "min" : "4.0.2",
+ "max" : null
+ },
+ "CURLOPT_FAILONERROR" : {
+ "min" : "4.0.2",
+ "max" : null
+ },
+ "CURLOPT_FILE" : {
+ "min" : "4.0.2",
+ "max" : null
+ },
+ "CURLOPT_FILETIME" : {
+ "min" : "4.0.2",
+ "max" : null
+ },
+ "CURLOPT_FNMATCH_FUNCTION" : {
+ "min" : "5.5.0",
+ "max" : null
+ },
+ "CURLOPT_FOLLOWLOCATION" : {
+ "min" : "4.0.2",
+ "max" : null
+ },
+ "CURLOPT_FORBID_REUSE" : {
+ "min" : "4.0.2",
+ "max" : null
+ },
+ "CURLOPT_FRESH_CONNECT" : {
+ "min" : "4.0.2",
+ "max" : null
+ },
+ "CURLOPT_FTPAPPEND" : {
+ "min" : "4.0.2",
+ "max" : null
+ },
+ "CURLOPT_FTPLISTONLY" : {
+ "min" : "4.0.2",
+ "max" : null
+ },
+ "CURLOPT_FTPPORT" : {
+ "min" : "4.0.2",
+ "max" : null
+ },
+ "CURLOPT_FTPSSLAUTH" : {
+ "min" : "5.1.0",
+ "max" : null
+ },
+ "CURLOPT_FTP_ACCOUNT" : {
+ "min" : "5.5.0",
+ "max" : null
+ },
+ "CURLOPT_FTP_ALTERNATIVE_TO_USER" : {
+ "min" : "5.5.0",
+ "max" : null
+ },
+ "CURLOPT_FTP_CREATE_MISSING_DIRS" : {
+ "min" : "4.0.2",
+ "max" : null
+ },
+ "CURLOPT_FTP_FILEMETHOD" : {
+ "min" : "5.3.0",
+ "max" : null
+ },
+ "CURLOPT_FTP_RESPONSE_TIMEOUT" : {
+ "min" : "5.5.0",
+ "max" : null
+ },
+ "CURLOPT_FTP_SKIP_PASV_IP" : {
+ "min" : "5.3.2",
+ "max" : null
+ },
+ "CURLOPT_FTP_SSL" : {
+ "min" : "5.2.0",
+ "max" : null
+ },
+ "CURLOPT_FTP_SSL_CCC" : {
+ "min" : "5.5.0",
+ "max" : null
+ },
+ "CURLOPT_FTP_USE_EPRT" : {
+ "min" : "4.0.2",
+ "max" : null
+ },
+ "CURLOPT_FTP_USE_EPSV" : {
+ "min" : "4.0.2",
+ "max" : null
+ },
+ "CURLOPT_FTP_USE_PRET" : {
+ "min" : "5.5.0",
+ "max" : null
+ },
+ "CURLOPT_GSSAPI_DELEGATION" : {
+ "min" : "5.5.0",
+ "max" : null
+ },
+ "CURLOPT_HEADER" : {
+ "min" : "4.0.2",
+ "max" : null
+ },
+ "CURLOPT_HEADERFUNCTION" : {
+ "min" : "4.0.2",
+ "max" : null
+ },
+ "CURLOPT_HTTP200ALIASES" : {
+ "min" : "4.0.2",
+ "max" : null
+ },
+ "CURLOPT_HTTPAUTH" : {
+ "min" : "4.0.2",
+ "max" : null
+ },
+ "CURLOPT_HTTPGET" : {
+ "min" : "4.0.2",
+ "max" : null
+ },
+ "CURLOPT_HTTPHEADER" : {
+ "min" : "4.0.2",
+ "max" : null
+ },
+ "CURLOPT_HTTPPROXYTUNNEL" : {
+ "min" : "4.0.2",
+ "max" : null
+ },
+ "CURLOPT_HTTP_CONTENT_DECODING" : {
+ "min" : "5.5.0",
+ "max" : null
+ },
+ "CURLOPT_HTTP_TRANSFER_DECODING" : {
+ "min" : "5.5.0",
+ "max" : null
+ },
+ "CURLOPT_HTTP_VERSION" : {
+ "min" : "4.0.2",
+ "max" : null
+ },
+ "CURLOPT_IGNORE_CONTENT_LENGTH" : {
+ "min" : "5.5.0",
+ "max" : null
+ },
+ "CURLOPT_INFILE" : {
+ "min" : "4.0.2",
+ "max" : null
+ },
+ "CURLOPT_INFILESIZE" : {
+ "min" : "4.0.2",
+ "max" : null
+ },
+ "CURLOPT_INTERFACE" : {
+ "min" : "4.0.2",
+ "max" : null
+ },
+ "CURLOPT_IPRESOLVE" : {
+ "min" : "5.3.0",
+ "max" : null
+ },
+ "CURLOPT_ISSUERCERT" : {
+ "min" : "5.5.0",
+ "max" : null
+ },
+ "CURLOPT_KEYPASSWD" : {
+ "min" : "5.3.0",
+ "max" : null
+ },
+ "CURLOPT_KRB4LEVEL" : {
+ "min" : "4.0.2",
+ "max" : null
+ },
+ "CURLOPT_KRBLEVEL" : {
+ "min" : "5.5.0",
+ "max" : null
+ },
+ "CURLOPT_LOCALPORT" : {
+ "min" : "5.5.0",
+ "max" : null
+ },
+ "CURLOPT_LOCALPORTRANGE" : {
+ "min" : "5.5.0",
+ "max" : null
+ },
+ "CURLOPT_LOW_SPEED_LIMIT" : {
+ "min" : "4.0.2",
+ "max" : null
+ },
+ "CURLOPT_LOW_SPEED_TIME" : {
+ "min" : "4.0.2",
+ "max" : null
+ },
+ "CURLOPT_MAIL_AUTH" : {
+ "min" : "5.5.0",
+ "max" : null
+ },
+ "CURLOPT_MAIL_FROM" : {
+ "min" : "5.5.0",
+ "max" : null
+ },
+ "CURLOPT_MAIL_RCPT" : {
+ "min" : "5.5.0",
+ "max" : null
+ },
+ "CURLOPT_MAXCONNECTS" : {
+ "min" : "4.0.2",
+ "max" : null
+ },
+ "CURLOPT_MAXFILESIZE" : {
+ "min" : "5.5.0",
+ "max" : null
+ },
+ "CURLOPT_MAXREDIRS" : {
+ "min" : "4.0.2",
+ "max" : null
+ },
+ "CURLOPT_MAX_RECV_SPEED_LARGE" : {
+ "min" : "5.3.7",
+ "max" : null
+ },
+ "CURLOPT_MAX_SEND_SPEED_LARGE" : {
+ "min" : "5.3.7",
+ "max" : null
+ },
+ "CURLOPT_MUTE" : {
+ "min" : "4.0.2",
+ "max" : null
+ },
+ "CURLOPT_NETRC" : {
+ "min" : "4.0.2",
+ "max" : null
+ },
+ "CURLOPT_NETRC_FILE" : {
+ "min" : "5.5.0",
+ "max" : null
+ },
+ "CURLOPT_NEW_DIRECTORY_PERMS" : {
+ "min" : "5.5.0",
+ "max" : null
+ },
+ "CURLOPT_NEW_FILE_PERMS" : {
+ "min" : "5.5.0",
+ "max" : null
+ },
+ "CURLOPT_NOBODY" : {
+ "min" : "4.0.2",
+ "max" : null
+ },
+ "CURLOPT_NOPROGRESS" : {
+ "min" : "4.0.2",
+ "max" : null
+ },
+ "CURLOPT_NOPROXY" : {
+ "min" : "5.5.0",
+ "max" : null
+ },
+ "CURLOPT_NOSIGNAL" : {
+ "min" : "4.0.2",
+ "max" : null
+ },
+ "CURLOPT_PASSWDFUNCTION" : {
+ "min" : "4.0.2",
+ "max" : null
+ },
+ "CURLOPT_PASSWORD" : {
+ "min" : "5.5.0",
+ "max" : null
+ },
+ "CURLOPT_PORT" : {
+ "min" : "4.0.2",
+ "max" : null
+ },
+ "CURLOPT_POST" : {
+ "min" : "4.0.2",
+ "max" : null
+ },
+ "CURLOPT_POSTFIELDS" : {
+ "min" : "4.0.2",
+ "max" : null
+ },
+ "CURLOPT_POSTQUOTE" : {
+ "min" : "4.0.2",
+ "max" : null
+ },
+ "CURLOPT_POSTREDIR" : {
+ "min" : "5.3.2",
+ "max" : null
+ },
+ "CURLOPT_PREQUOTE" : {
+ "min" : "5.5.0",
+ "max" : null
+ },
+ "CURLOPT_PRIVATE" : {
+ "min" : "5.2.4",
+ "max" : null
+ },
+ "CURLOPT_PROGRESSFUNCTION" : {
+ "min" : "5.3.0",
+ "max" : null
+ },
+ "CURLOPT_PROTOCOLS" : {
+ "min" : "4.0.2",
+ "max" : null
+ },
+ "CURLOPT_PROXY" : {
+ "min" : "4.0.2",
+ "max" : null
+ },
+ "CURLOPT_PROXYAUTH" : {
+ "min" : "4.0.2",
+ "max" : null
+ },
+ "CURLOPT_PROXYPASSWORD" : {
+ "min" : "5.5.0",
+ "max" : null
+ },
+ "CURLOPT_PROXYPORT" : {
+ "min" : "4.0.2",
+ "max" : null
+ },
+ "CURLOPT_PROXYTYPE" : {
+ "min" : "4.0.2",
+ "max" : null
+ },
+ "CURLOPT_PROXYUSERNAME" : {
+ "min" : "5.5.0",
+ "max" : null
+ },
+ "CURLOPT_PROXYUSERPWD" : {
+ "min" : "4.0.2",
+ "max" : null
+ },
+ "CURLOPT_PROXY_TRANSFER_MODE" : {
+ "min" : "5.5.0",
+ "max" : null
+ },
+ "CURLOPT_PUT" : {
+ "min" : "4.0.2",
+ "max" : null
+ },
+ "CURLOPT_QUOTE" : {
+ "min" : "4.0.2",
+ "max" : null
+ },
+ "CURLOPT_RANDOM_FILE" : {
+ "min" : "4.0.2",
+ "max" : null
+ },
+ "CURLOPT_RANGE" : {
+ "min" : "4.0.2",
+ "max" : null
+ },
+ "CURLOPT_READDATA" : {
+ "min" : "4.0.2",
+ "max" : null
+ },
+ "CURLOPT_READFUNCTION" : {
+ "min" : "4.0.2",
+ "max" : null
+ },
+ "CURLOPT_REDIR_PROTOCOLS" : {
+ "min" : "4.0.2",
+ "max" : null
+ },
+ "CURLOPT_REFERER" : {
+ "min" : "4.0.2",
+ "max" : null
+ },
+ "CURLOPT_RESOLVE" : {
+ "min" : "5.5.0",
+ "max" : null
+ },
+ "CURLOPT_RESUME_FROM" : {
+ "min" : "4.0.2",
+ "max" : null
+ },
+ "CURLOPT_RETURNTRANSFER" : {
+ "min" : "4.0.2",
+ "max" : null
+ },
+ "CURLOPT_RTSP_CLIENT_CSEQ" : {
+ "min" : "5.5.0",
+ "max" : null
+ },
+ "CURLOPT_RTSP_REQUEST" : {
+ "min" : "5.5.0",
+ "max" : null
+ },
+ "CURLOPT_RTSP_SERVER_CSEQ" : {
+ "min" : "5.5.0",
+ "max" : null
+ },
+ "CURLOPT_RTSP_SESSION_ID" : {
+ "min" : "5.5.0",
+ "max" : null
+ },
+ "CURLOPT_RTSP_STREAM_URI" : {
+ "min" : "5.5.0",
+ "max" : null
+ },
+ "CURLOPT_RTSP_TRANSPORT" : {
+ "min" : "5.5.0",
+ "max" : null
+ },
+ "CURLOPT_SAFE_UPLOAD" : {
+ "min" : "5.5.0",
+ "max" : null
+ },
+ "CURLOPT_SHARE" : {
+ "min" : "5.5.0",
+ "max" : null
+ },
+ "CURLOPT_SOCKS5_GSSAPI_NEC" : {
+ "min" : "5.5.0",
+ "max" : null
+ },
+ "CURLOPT_SOCKS5_GSSAPI_SERVICE" : {
+ "min" : "5.5.0",
+ "max" : null
+ },
+ "CURLOPT_SSH_AUTH_TYPES" : {
+ "min" : "5.3.0",
+ "max" : null
+ },
+ "CURLOPT_SSH_HOST_PUBLIC_KEY_MD5" : {
+ "min" : "5.3.0",
+ "max" : null
+ },
+ "CURLOPT_SSH_KNOWNHOSTS" : {
+ "min" : "5.5.0",
+ "max" : null
+ },
+ "CURLOPT_SSH_PRIVATE_KEYFILE" : {
+ "min" : "5.3.0",
+ "max" : null
+ },
+ "CURLOPT_SSH_PUBLIC_KEYFILE" : {
+ "min" : "5.3.0",
+ "max" : null
+ },
+ "CURLOPT_SSLCERT" : {
+ "min" : "4.0.2",
+ "max" : null
+ },
+ "CURLOPT_SSLCERTPASSWD" : {
+ "min" : "4.0.2",
+ "max" : null
+ },
+ "CURLOPT_SSLCERTTYPE" : {
+ "min" : "4.0.2",
+ "max" : null
+ },
+ "CURLOPT_SSLENGINE" : {
+ "min" : "4.0.2",
+ "max" : null
+ },
+ "CURLOPT_SSLENGINE_DEFAULT" : {
+ "min" : "4.0.2",
+ "max" : null
+ },
+ "CURLOPT_SSLKEY" : {
+ "min" : "4.0.2",
+ "max" : null
+ },
+ "CURLOPT_SSLKEYPASSWD" : {
+ "min" : "4.0.2",
+ "max" : null
+ },
+ "CURLOPT_SSLKEYTYPE" : {
+ "min" : "4.0.2",
+ "max" : null
+ },
+ "CURLOPT_SSLVERSION" : {
+ "min" : "4.0.2",
+ "max" : null
+ },
+ "CURLOPT_SSL_CIPHER_LIST" : {
+ "min" : "4.0.2",
+ "max" : null
+ },
+ "CURLOPT_SSL_OPTIONS" : {
+ "min" : "5.5.0",
+ "max" : null
+ },
+ "CURLOPT_SSL_SESSIONID_CACHE" : {
+ "min" : "5.5.0",
+ "max" : null
+ },
+ "CURLOPT_SSL_VERIFYHOST" : {
+ "min" : "4.0.2",
+ "max" : null
+ },
+ "CURLOPT_SSL_VERIFYPEER" : {
+ "min" : "4.0.2",
+ "max" : null
+ },
+ "CURLOPT_STDERR" : {
+ "min" : "4.0.2",
+ "max" : null
+ },
+ "CURLOPT_TCP_KEEPALIVE" : {
+ "min" : "5.5.0",
+ "max" : null
+ },
+ "CURLOPT_TCP_KEEPIDLE" : {
+ "min" : "5.5.0",
+ "max" : null
+ },
+ "CURLOPT_TCP_KEEPINTVL" : {
+ "min" : "5.5.0",
+ "max" : null
+ },
+ "CURLOPT_TCP_NODELAY" : {
+ "min" : "5.2.1",
+ "max" : null
+ },
+ "CURLOPT_TELNETOPTIONS" : {
+ "min" : "5.5.0",
+ "max" : null
+ },
+ "CURLOPT_TFTP_BLKSIZE" : {
+ "min" : "5.5.0",
+ "max" : null
+ },
+ "CURLOPT_TIMECONDITION" : {
+ "min" : "4.0.2",
+ "max" : null
+ },
+ "CURLOPT_TIMEOUT" : {
+ "min" : "4.0.2",
+ "max" : null
+ },
+ "CURLOPT_TIMEOUT_MS" : {
+ "min" : "4.0.2",
+ "max" : null
+ },
+ "CURLOPT_TIMEVALUE" : {
+ "min" : "4.0.2",
+ "max" : null
+ },
+ "CURLOPT_TLSAUTH_PASSWORD" : {
+ "min" : "5.5.0",
+ "max" : null
+ },
+ "CURLOPT_TLSAUTH_TYPE" : {
+ "min" : "5.5.0",
+ "max" : null
+ },
+ "CURLOPT_TLSAUTH_USERNAME" : {
+ "min" : "5.5.0",
+ "max" : null
+ },
+ "CURLOPT_TRANSFERTEXT" : {
+ "min" : "4.0.2",
+ "max" : null
+ },
+ "CURLOPT_TRANSFER_ENCODING" : {
+ "min" : "5.5.0",
+ "max" : null
+ },
+ "CURLOPT_UNRESTRICTED_AUTH" : {
+ "min" : "4.0.2",
+ "max" : null
+ },
+ "CURLOPT_UPLOAD" : {
+ "min" : "4.0.2",
+ "max" : null
+ },
+ "CURLOPT_URL" : {
+ "min" : "4.0.2",
+ "max" : null
+ },
+ "CURLOPT_USERAGENT" : {
+ "min" : "4.0.2",
+ "max" : null
+ },
+ "CURLOPT_USERNAME" : {
+ "min" : "5.5.0",
+ "max" : null
+ },
+ "CURLOPT_USERPWD" : {
+ "min" : "4.0.2",
+ "max" : null
+ },
+ "CURLOPT_USE_SSL" : {
+ "min" : "5.5.0",
+ "max" : null
+ },
+ "CURLOPT_VERBOSE" : {
+ "min" : "4.0.2",
+ "max" : null
+ },
+ "CURLOPT_WILDCARDMATCH" : {
+ "min" : "5.5.0",
+ "max" : null
+ },
+ "CURLOPT_WRITEFUNCTION" : {
+ "min" : "4.0.2",
+ "max" : null
+ },
+ "CURLOPT_WRITEHEADER" : {
+ "min" : "4.0.2",
+ "max" : null
+ },
+ "CURLPAUSE_ALL" : {
+ "min" : "5.5.0",
+ "max" : null
+ },
+ "CURLPAUSE_CONT" : {
+ "min" : "5.5.0",
+ "max" : null
+ },
+ "CURLPAUSE_RECV" : {
+ "min" : "5.5.0",
+ "max" : null
+ },
+ "CURLPAUSE_RECV_CONT" : {
+ "min" : "5.5.0",
+ "max" : null
+ },
+ "CURLPAUSE_SEND" : {
+ "min" : "5.5.0",
+ "max" : null
+ },
+ "CURLPAUSE_SEND_CONT" : {
+ "min" : "5.5.0",
+ "max" : null
+ },
+ "CURLPROTO_ALL" : {
+ "min" : "4.0.2",
+ "max" : null
+ },
+ "CURLPROTO_DICT" : {
+ "min" : "4.0.2",
+ "max" : null
+ },
+ "CURLPROTO_FILE" : {
+ "min" : "4.0.2",
+ "max" : null
+ },
+ "CURLPROTO_FTP" : {
+ "min" : "4.0.2",
+ "max" : null
+ },
+ "CURLPROTO_FTPS" : {
+ "min" : "4.0.2",
+ "max" : null
+ },
+ "CURLPROTO_GOPHER" : {
+ "min" : "5.5.0",
+ "max" : null
+ },
+ "CURLPROTO_HTTP" : {
+ "min" : "4.0.2",
+ "max" : null
+ },
+ "CURLPROTO_HTTPS" : {
+ "min" : "4.0.2",
+ "max" : null
+ },
+ "CURLPROTO_IMAP" : {
+ "min" : "5.5.0",
+ "max" : null
+ },
+ "CURLPROTO_IMAPS" : {
+ "min" : "5.5.0",
+ "max" : null
+ },
+ "CURLPROTO_LDAP" : {
+ "min" : "4.0.2",
+ "max" : null
+ },
+ "CURLPROTO_LDAPS" : {
+ "min" : "4.0.2",
+ "max" : null
+ },
+ "CURLPROTO_POP3" : {
+ "min" : "5.5.0",
+ "max" : null
+ },
+ "CURLPROTO_POP3S" : {
+ "min" : "5.5.0",
+ "max" : null
+ },
+ "CURLPROTO_RTMP" : {
+ "min" : "5.5.0",
+ "max" : null
+ },
+ "CURLPROTO_RTMPE" : {
+ "min" : "5.5.0",
+ "max" : null
+ },
+ "CURLPROTO_RTMPS" : {
+ "min" : "5.5.0",
+ "max" : null
+ },
+ "CURLPROTO_RTMPT" : {
+ "min" : "5.5.0",
+ "max" : null
+ },
+ "CURLPROTO_RTMPTE" : {
+ "min" : "5.5.0",
+ "max" : null
+ },
+ "CURLPROTO_RTMPTS" : {
+ "min" : "5.5.0",
+ "max" : null
+ },
+ "CURLPROTO_RTSP" : {
+ "min" : "5.5.0",
+ "max" : null
+ },
+ "CURLPROTO_SCP" : {
+ "min" : "4.0.2",
+ "max" : null
+ },
+ "CURLPROTO_SFTP" : {
+ "min" : "4.0.2",
+ "max" : null
+ },
+ "CURLPROTO_SMTP" : {
+ "min" : "5.5.0",
+ "max" : null
+ },
+ "CURLPROTO_SMTPS" : {
+ "min" : "5.5.0",
+ "max" : null
+ },
+ "CURLPROTO_TELNET" : {
+ "min" : "4.0.2",
+ "max" : null
+ },
+ "CURLPROTO_TFTP" : {
+ "min" : "4.0.2",
+ "max" : null
+ },
+ "CURLPROXY_HTTP" : {
+ "min" : "4.0.2",
+ "max" : null
+ },
+ "CURLPROXY_SOCKS4" : {
+ "min" : "5.2.10",
+ "max" : null
+ },
+ "CURLPROXY_SOCKS5" : {
+ "min" : "4.0.2",
+ "max" : null
+ },
+ "CURLSHOPT_NONE" : {
+ "min" : "5.5.0",
+ "max" : null
+ },
+ "CURLSHOPT_SHARE" : {
+ "min" : "5.5.0",
+ "max" : null
+ },
+ "CURLSHOPT_UNSHARE" : {
+ "min" : "5.5.0",
+ "max" : null
+ },
+ "CURLSSH_AUTH_ANY" : {
+ "min" : "5.5.0",
+ "max" : null
+ },
+ "CURLSSH_AUTH_DEFAULT" : {
+ "min" : "5.3.0",
+ "max" : null
+ },
+ "CURLSSH_AUTH_HOST" : {
+ "min" : "5.3.0",
+ "max" : null
+ },
+ "CURLSSH_AUTH_KEYBOARD" : {
+ "min" : "5.3.0",
+ "max" : null
+ },
+ "CURLSSH_AUTH_NONE" : {
+ "min" : "5.3.0",
+ "max" : null
+ },
+ "CURLSSH_AUTH_PASSWORD" : {
+ "min" : "5.3.0",
+ "max" : null
+ },
+ "CURLSSH_AUTH_PUBLICKEY" : {
+ "min" : "5.3.0",
+ "max" : null
+ },
+ "CURLSSLOPT_ALLOW_BEAST" : {
+ "min" : "5.5.0",
+ "max" : null
+ },
+ "CURLUSESSL_ALL" : {
+ "min" : "5.5.0",
+ "max" : null
+ },
+ "CURLUSESSL_CONTROL" : {
+ "min" : "5.5.0",
+ "max" : null
+ },
+ "CURLUSESSL_NONE" : {
+ "min" : "5.5.0",
+ "max" : null
+ },
+ "CURLUSESSL_TRY" : {
+ "min" : "5.5.0",
+ "max" : null
+ },
+ "CURLVERSION_NOW" : {
+ "min" : "4.0.2",
+ "max" : null
+ },
+ "CURL_FNMATCHFUNC_FAIL" : {
+ "min" : "5.5.0",
+ "max" : null
+ },
+ "CURL_FNMATCHFUNC_MATCH" : {
+ "min" : "5.5.0",
+ "max" : null
+ },
+ "CURL_FNMATCHFUNC_NOMATCH" : {
+ "min" : "5.5.0",
+ "max" : null
+ },
+ "CURL_HTTP_VERSION_1_0" : {
+ "min" : "4.0.2",
+ "max" : null
+ },
+ "CURL_HTTP_VERSION_1_1" : {
+ "min" : "4.0.2",
+ "max" : null
+ },
+ "CURL_HTTP_VERSION_NONE" : {
+ "min" : "4.0.2",
+ "max" : null
+ },
+ "CURL_IPRESOLVE_V4" : {
+ "min" : "5.3.0",
+ "max" : null
+ },
+ "CURL_IPRESOLVE_V6" : {
+ "min" : "5.3.0",
+ "max" : null
+ },
+ "CURL_IPRESOLVE_WHATEVER" : {
+ "min" : "5.3.0",
+ "max" : null
+ },
+ "CURL_LOCK_DATA_COOKIE" : {
+ "min" : "5.5.0",
+ "max" : null
+ },
+ "CURL_LOCK_DATA_DNS" : {
+ "min" : "5.5.0",
+ "max" : null
+ },
+ "CURL_LOCK_DATA_SSL_SESSION" : {
+ "min" : "5.5.0",
+ "max" : null
+ },
+ "CURL_NETRC_IGNORED" : {
+ "min" : "4.0.2",
+ "max" : null
+ },
+ "CURL_NETRC_OPTIONAL" : {
+ "min" : "4.0.2",
+ "max" : null
+ },
+ "CURL_NETRC_REQUIRED" : {
+ "min" : "4.0.2",
+ "max" : null
+ },
+ "CURL_READFUNC_PAUSE" : {
+ "min" : "5.5.0",
+ "max" : null
+ },
+ "CURL_RTSPREQ_ANNOUNCE" : {
+ "min" : "5.5.0",
+ "max" : null
+ },
+ "CURL_RTSPREQ_DESCRIBE" : {
+ "min" : "5.5.0",
+ "max" : null
+ },
+ "CURL_RTSPREQ_GET_PARAMETER" : {
+ "min" : "5.5.0",
+ "max" : null
+ },
+ "CURL_RTSPREQ_OPTIONS" : {
+ "min" : "5.5.0",
+ "max" : null
+ },
+ "CURL_RTSPREQ_PAUSE" : {
+ "min" : "5.5.0",
+ "max" : null
+ },
+ "CURL_RTSPREQ_PLAY" : {
+ "min" : "5.5.0",
+ "max" : null
+ },
+ "CURL_RTSPREQ_RECEIVE" : {
+ "min" : "5.5.0",
+ "max" : null
+ },
+ "CURL_RTSPREQ_RECORD" : {
+ "min" : "5.5.0",
+ "max" : null
+ },
+ "CURL_RTSPREQ_SETUP" : {
+ "min" : "5.5.0",
+ "max" : null
+ },
+ "CURL_RTSPREQ_SET_PARAMETER" : {
+ "min" : "5.5.0",
+ "max" : null
+ },
+ "CURL_RTSPREQ_TEARDOWN" : {
+ "min" : "5.5.0",
+ "max" : null
+ },
+ "CURL_SSLVERSION_DEFAULT" : {
+ "min" : "5.5.0",
+ "max" : null
+ },
+ "CURL_SSLVERSION_SSLv2" : {
+ "min" : "5.5.0",
+ "max" : null
+ },
+ "CURL_SSLVERSION_SSLv3" : {
+ "min" : "5.5.0",
+ "max" : null
+ },
+ "CURL_SSLVERSION_TLSv1" : {
+ "min" : "5.5.0",
+ "max" : null
+ },
+ "CURL_TIMECOND_IFMODSINCE" : {
+ "min" : "4.0.2",
+ "max" : null
+ },
+ "CURL_TIMECOND_IFUNMODSINCE" : {
+ "min" : "4.0.2",
+ "max" : null
+ },
+ "CURL_TIMECOND_LASTMOD" : {
+ "min" : "4.0.2",
+ "max" : null
+ },
+ "CURL_TIMECOND_NONE" : {
+ "min" : "5.5.0",
+ "max" : null
+ },
+ "CURL_TLSAUTH_SRP" : {
+ "min" : "5.5.0",
+ "max" : null
+ },
+ "CURL_VERSION_IPV6" : {
+ "min" : "4.0.2",
+ "max" : null
+ },
+ "CURL_VERSION_KERBEROS4" : {
+ "min" : "4.0.2",
+ "max" : null
+ },
+ "CURL_VERSION_LIBZ" : {
+ "min" : "4.0.2",
+ "max" : null
+ },
+ "CURL_VERSION_SSL" : {
+ "min" : "4.0.2",
+ "max" : null
+ },
+ "CURL_WRITEFUNC_PAUSE" : {
+ "min" : "5.5.0",
+ "max" : null
+ },
+ "DATE_ATOM" : {
+ "min" : "5.1.1",
+ "max" : null
+ },
+ "DATE_COOKIE" : {
+ "min" : "5.1.1",
+ "max" : null
+ },
+ "DATE_ISO8601" : {
+ "min" : "5.1.1",
+ "max" : null
+ },
+ "DATE_RFC1036" : {
+ "min" : "5.1.1",
+ "max" : null
+ },
+ "DATE_RFC1123" : {
+ "min" : "5.1.1",
+ "max" : null
+ },
+ "DATE_RFC2822" : {
+ "min" : "5.1.1",
+ "max" : null
+ },
+ "DATE_RFC3339" : {
+ "min" : "5.1.3",
+ "max" : null
+ },
+ "DATE_RFC822" : {
+ "min" : "5.1.1",
+ "max" : null
+ },
+ "DATE_RFC850" : {
+ "min" : "5.1.1",
+ "max" : null
+ },
+ "DATE_RSS" : {
+ "min" : "5.1.1",
+ "max" : null
+ },
+ "DATE_W3C" : {
+ "min" : "5.1.1",
+ "max" : null
+ },
+ "DAY_1" : {
+ "min" : "4.1.0",
+ "max" : null
+ },
+ "DAY_2" : {
+ "min" : "4.1.0",
+ "max" : null
+ },
+ "DAY_3" : {
+ "min" : "4.1.0",
+ "max" : null
+ },
+ "DAY_4" : {
+ "min" : "4.1.0",
+ "max" : null
+ },
+ "DAY_5" : {
+ "min" : "4.1.0",
+ "max" : null
+ },
+ "DAY_6" : {
+ "min" : "4.1.0",
+ "max" : null
+ },
+ "DAY_7" : {
+ "min" : "4.1.0",
+ "max" : null
+ },
+ "DEBUG_BACKTRACE_IGNORE_ARGS" : {
+ "min" : "5.3.6",
+ "max" : null
+ },
+ "DEBUG_BACKTRACE_PROVIDE_OBJECT" : {
+ "min" : "5.3.6",
+ "max" : null
+ },
+ "DEFAULT_INCLUDE_PATH" : {
+ "min" : "4.0.0",
+ "max" : null
+ },
+ "DIRECTORY_SEPARATOR" : {
+ "min" : "4.0.6",
+ "max" : null
+ },
+ "DNS_A" : {
+ "min" : "4.0.0",
+ "max" : null
+ },
+ "DNS_A6" : {
+ "min" : "4.0.0",
+ "max" : null
+ },
+ "DNS_AAAA" : {
+ "min" : "4.0.0",
+ "max" : null
+ },
+ "DNS_ALL" : {
+ "min" : "4.0.0",
+ "max" : null
+ },
+ "DNS_ANY" : {
+ "min" : "4.0.0",
+ "max" : null
+ },
+ "DNS_CNAME" : {
+ "min" : "4.0.0",
+ "max" : null
+ },
+ "DNS_HINFO" : {
+ "min" : "4.0.0",
+ "max" : null
+ },
+ "DNS_MX" : {
+ "min" : "4.0.0",
+ "max" : null
+ },
+ "DNS_NAPTR" : {
+ "min" : "4.0.0",
+ "max" : null
+ },
+ "DNS_NS" : {
+ "min" : "4.0.0",
+ "max" : null
+ },
+ "DNS_PTR" : {
+ "min" : "4.0.0",
+ "max" : null
+ },
+ "DNS_SOA" : {
+ "min" : "4.0.0",
+ "max" : null
+ },
+ "DNS_SRV" : {
+ "min" : "4.0.0",
+ "max" : null
+ },
+ "DNS_TXT" : {
+ "min" : "4.0.0",
+ "max" : null
+ },
+ "D_FMT" : {
+ "min" : "4.1.0",
+ "max" : null
+ },
+ "D_T_FMT" : {
+ "min" : "4.1.0",
+ "max" : null
+ },
+ "ENT_COMPAT" : {
+ "min" : "4.0.0",
+ "max" : null
+ },
+ "ENT_DISALLOWED" : {
+ "min" : "5.4.0",
+ "max" : null
+ },
+ "ENT_HTML401" : {
+ "min" : "5.4.0",
+ "max" : null
+ },
+ "ENT_HTML5" : {
+ "min" : "5.4.0",
+ "max" : null
+ },
+ "ENT_IGNORE" : {
+ "min" : "5.3.0",
+ "max" : null
+ },
+ "ENT_NOQUOTES" : {
+ "min" : "4.0.0",
+ "max" : null
+ },
+ "ENT_QUOTES" : {
+ "min" : "4.0.0",
+ "max" : null
+ },
+ "ENT_SUBSTITUTE" : {
+ "min" : "5.4.0",
+ "max" : null
+ },
+ "ENT_XHTML" : {
+ "min" : "5.4.0",
+ "max" : null
+ },
+ "ENT_XML1" : {
+ "min" : "5.4.0",
+ "max" : null
+ },
+ "ERA" : {
+ "min" : "4.1.0",
+ "max" : null
+ },
+ "ERA_D_FMT" : {
+ "min" : "4.1.0",
+ "max" : null
+ },
+ "ERA_D_T_FMT" : {
+ "min" : "4.1.0",
+ "max" : null
+ },
+ "ERA_T_FMT" : {
+ "min" : "4.1.0",
+ "max" : null
+ },
+ "EXTR_IF_EXISTS" : {
+ "min" : "4.0.0",
+ "max" : null
+ },
+ "EXTR_OVERWRITE" : {
+ "min" : "4.0.0",
+ "max" : null
+ },
+ "EXTR_PREFIX_ALL" : {
+ "min" : "4.0.0",
+ "max" : null
+ },
+ "EXTR_PREFIX_IF_EXISTS" : {
+ "min" : "4.0.0",
+ "max" : null
+ },
+ "EXTR_PREFIX_INVALID" : {
+ "min" : "4.0.0",
+ "max" : null
+ },
+ "EXTR_PREFIX_SAME" : {
+ "min" : "4.0.0",
+ "max" : null
+ },
+ "EXTR_REFS" : {
+ "min" : "4.0.0",
+ "max" : null
+ },
+ "EXTR_SKIP" : {
+ "min" : "4.0.0",
+ "max" : null
+ },
+ "E_ALL" : {
+ "min" : "4.0.0",
+ "max" : null
+ },
+ "E_COMPILE_ERROR" : {
+ "min" : "4.0.0",
+ "max" : null
+ },
+ "E_COMPILE_WARNING" : {
+ "min" : "4.0.0",
+ "max" : null
+ },
+ "E_CORE_ERROR" : {
+ "min" : "4.0.0",
+ "max" : null
+ },
+ "E_CORE_WARNING" : {
+ "min" : "4.0.0",
+ "max" : null
+ },
+ "E_DEPRECATED" : {
+ "min" : "5.3.0",
+ "max" : null
+ },
+ "E_ERROR" : {
+ "min" : "4.0.0",
+ "max" : null
+ },
+ "E_NOTICE" : {
+ "min" : "4.0.0",
+ "max" : null
+ },
+ "E_PARSE" : {
+ "min" : "4.0.0",
+ "max" : null
+ },
+ "E_RECOVERABLE_ERROR" : {
+ "min" : "5.2.0",
+ "max" : null
+ },
+ "E_STRICT" : {
+ "min" : "5.0.0",
+ "max" : null
+ },
+ "E_USER_DEPRECATED" : {
+ "min" : "5.3.0",
+ "max" : null
+ },
+ "E_USER_ERROR" : {
+ "min" : "4.0.0",
+ "max" : null
+ },
+ "E_USER_NOTICE" : {
+ "min" : "4.0.0",
+ "max" : null
+ },
+ "E_USER_WARNING" : {
+ "min" : "4.0.0",
+ "max" : null
+ },
+ "E_WARNING" : {
+ "min" : "4.0.0",
+ "max" : null
+ },
+ "FALSE" : {
+ "min" : "4.0.0",
+ "max" : null
+ },
+ "FILEINFO_COMPRESS" : {
+ "min" : "4.0.0",
+ "max" : "5.2.17"
+ },
+ "FILEINFO_CONTINUE" : {
+ "min" : "4.0.0",
+ "max" : null
+ },
+ "FILEINFO_DEVICES" : {
+ "min" : "4.0.0",
+ "max" : null
+ },
+ "FILEINFO_MIME" : {
+ "min" : "4.0.0",
+ "max" : null
+ },
+ "FILEINFO_MIME_ENCODING" : {
+ "min" : "5.3.0",
+ "max" : null
+ },
+ "FILEINFO_MIME_TYPE" : {
+ "min" : "5.3.0",
+ "max" : null
+ },
+ "FILEINFO_NONE" : {
+ "min" : "4.0.0",
+ "max" : null
+ },
+ "FILEINFO_PRESERVE_ATIME" : {
+ "min" : "4.0.0",
+ "max" : null
+ },
+ "FILEINFO_RAW" : {
+ "min" : "4.0.0",
+ "max" : null
+ },
+ "FILEINFO_SYMLINK" : {
+ "min" : "4.0.0",
+ "max" : null
+ },
+ "FILE_APPEND" : {
+ "min" : "4.0.0",
+ "max" : null
+ },
+ "FILE_BINARY" : {
+ "min" : "5.2.7",
+ "max" : null
+ },
+ "FILE_IGNORE_NEW_LINES" : {
+ "min" : "4.0.0",
+ "max" : null
+ },
+ "FILE_NO_DEFAULT_CONTEXT" : {
+ "min" : "4.0.0",
+ "max" : null
+ },
+ "FILE_SKIP_EMPTY_LINES" : {
+ "min" : "4.0.0",
+ "max" : null
+ },
+ "FILE_TEXT" : {
+ "min" : "5.2.7",
+ "max" : null
+ },
+ "FILE_USE_INCLUDE_PATH" : {
+ "min" : "4.0.0",
+ "max" : null
+ },
+ "FNM_CASEFOLD" : {
+ "min" : "4.0.0",
+ "max" : null
+ },
+ "FNM_NOESCAPE" : {
+ "min" : "4.0.0",
+ "max" : null
+ },
+ "FNM_PATHNAME" : {
+ "min" : "4.0.0",
+ "max" : null
+ },
+ "FNM_PERIOD" : {
+ "min" : "4.0.0",
+ "max" : null
+ },
+ "FPE_FLTDIV" : {
+ "min" : "5.3.0",
+ "max" : null
+ },
+ "FPE_FLTINV" : {
+ "min" : "5.3.0",
+ "max" : null
+ },
+ "FPE_FLTOVF" : {
+ "min" : "5.3.0",
+ "max" : null
+ },
+ "FPE_FLTRES" : {
+ "min" : "5.3.0",
+ "max" : null
+ },
+ "FPE_FLTSUB" : {
+ "min" : "5.3.0",
+ "max" : null
+ },
+ "FPE_FLTUND" : {
+ "min" : "5.3.0",
+ "max" : null
+ },
+ "FPE_INTDIV" : {
+ "min" : "5.3.0",
+ "max" : null
+ },
+ "FPE_INTOVF" : {
+ "min" : "5.3.0",
+ "max" : null
+ },
+ "GD_BUNDLED" : {
+ "min" : "4.0.0",
+ "max" : null
+ },
+ "GD_EXTRA_VERSION" : {
+ "min" : "5.2.4",
+ "max" : null
+ },
+ "GD_MAJOR_VERSION" : {
+ "min" : "5.2.4",
+ "max" : null
+ },
+ "GD_MINOR_VERSION" : {
+ "min" : "5.2.4",
+ "max" : null
+ },
+ "GD_RELEASE_VERSION" : {
+ "min" : "5.2.4",
+ "max" : null
+ },
+ "GD_VERSION" : {
+ "min" : "5.2.4",
+ "max" : null
+ },
+ "GLOB_AVAILABLE_FLAGS" : {
+ "min" : "5.2.4",
+ "max" : null
+ },
+ "GLOB_BRACE" : {
+ "min" : "4.0.0",
+ "max" : null
+ },
+ "GLOB_ERR" : {
+ "min" : "4.0.0",
+ "max" : null
+ },
+ "GLOB_MARK" : {
+ "min" : "4.0.0",
+ "max" : null
+ },
+ "GLOB_NOCHECK" : {
+ "min" : "4.0.0",
+ "max" : null
+ },
+ "GLOB_NOESCAPE" : {
+ "min" : "4.0.0",
+ "max" : null
+ },
+ "GLOB_NOSORT" : {
+ "min" : "4.0.0",
+ "max" : null
+ },
+ "GLOB_ONLYDIR" : {
+ "min" : "4.0.0",
+ "max" : null
+ },
+ "GRAPHEME_EXTR_COUNT" : {
+ "min" : "5.2.4",
+ "max" : null
+ },
+ "GRAPHEME_EXTR_MAXBYTES" : {
+ "min" : "5.2.4",
+ "max" : null
+ },
+ "GRAPHEME_EXTR_MAXCHARS" : {
+ "min" : "5.2.4",
+ "max" : null
+ },
+ "HTML_ENTITIES" : {
+ "min" : "4.0.0",
+ "max" : null
+ },
+ "HTML_SPECIALCHARS" : {
+ "min" : "4.0.0",
+ "max" : null
+ },
+ "IDNA_ALLOW_UNASSIGNED" : {
+ "min" : "5.2.4",
+ "max" : null
+ },
+ "IDNA_DEFAULT" : {
+ "min" : "5.2.4",
+ "max" : null
+ },
+ "IDNA_USE_STD3_RULES" : {
+ "min" : "5.2.4",
+ "max" : null
+ },
+ "ILL_BADSTK" : {
+ "min" : "5.3.0",
+ "max" : null
+ },
+ "ILL_COPROC" : {
+ "min" : "5.3.0",
+ "max" : null
+ },
+ "ILL_ILLADR" : {
+ "min" : "5.3.0",
+ "max" : null
+ },
+ "ILL_ILLOPC" : {
+ "min" : "5.3.0",
+ "max" : null
+ },
+ "ILL_ILLOPN" : {
+ "min" : "5.3.0",
+ "max" : null
+ },
+ "ILL_ILLTRP" : {
+ "min" : "5.3.0",
+ "max" : null
+ },
+ "ILL_PRVOPC" : {
+ "min" : "5.3.0",
+ "max" : null
+ },
+ "ILL_PRVREG" : {
+ "min" : "5.3.0",
+ "max" : null
+ },
+ "IMAGETYPE_BMP" : {
+ "min" : "4.0.0",
+ "max" : null
+ },
+ "IMAGETYPE_COUNT" : {
+ "min" : "5.3.0",
+ "max" : null
+ },
+ "IMAGETYPE_GIF" : {
+ "min" : "4.0.0",
+ "max" : null
+ },
+ "IMAGETYPE_ICO" : {
+ "min" : "5.3.0",
+ "max" : null
+ },
+ "IMAGETYPE_IFF" : {
+ "min" : "4.0.0",
+ "max" : null
+ },
+ "IMAGETYPE_JB2" : {
+ "min" : "4.0.0",
+ "max" : null
+ },
+ "IMAGETYPE_JP2" : {
+ "min" : "4.0.0",
+ "max" : null
+ },
+ "IMAGETYPE_JPC" : {
+ "min" : "4.0.0",
+ "max" : null
+ },
+ "IMAGETYPE_JPEG" : {
+ "min" : "4.0.0",
+ "max" : null
+ },
+ "IMAGETYPE_JPEG2000" : {
+ "min" : "4.0.0",
+ "max" : null
+ },
+ "IMAGETYPE_JPX" : {
+ "min" : "4.0.0",
+ "max" : null
+ },
+ "IMAGETYPE_PNG" : {
+ "min" : "4.0.0",
+ "max" : null
+ },
+ "IMAGETYPE_PSD" : {
+ "min" : "4.0.0",
+ "max" : null
+ },
+ "IMAGETYPE_SWC" : {
+ "min" : "4.0.0",
+ "max" : null
+ },
+ "IMAGETYPE_SWF" : {
+ "min" : "4.0.0",
+ "max" : null
+ },
+ "IMAGETYPE_TIFF_II" : {
+ "min" : "4.0.0",
+ "max" : null
+ },
+ "IMAGETYPE_TIFF_MM" : {
+ "min" : "4.0.0",
+ "max" : null
+ },
+ "IMAGETYPE_UNKNOWN" : {
+ "min" : "5.3.0",
+ "max" : null
+ },
+ "IMAGETYPE_WBMP" : {
+ "min" : "4.0.0",
+ "max" : null
+ },
+ "IMAGETYPE_XBM" : {
+ "min" : "4.0.0",
+ "max" : null
+ },
+ "IMG_AFFINE_ROTATE" : {
+ "min" : "5.5.0",
+ "max" : null
+ },
+ "IMG_AFFINE_SCALE" : {
+ "min" : "5.5.0",
+ "max" : null
+ },
+ "IMG_AFFINE_SHEAR_HORIZONTAL" : {
+ "min" : "5.5.0",
+ "max" : null
+ },
+ "IMG_AFFINE_SHEAR_VERTICAL" : {
+ "min" : "5.5.0",
+ "max" : null
+ },
+ "IMG_AFFINE_TRANSLATE" : {
+ "min" : "5.5.0",
+ "max" : null
+ },
+ "IMG_ARC_CHORD" : {
+ "min" : "4.0.0",
+ "max" : null
+ },
+ "IMG_ARC_EDGED" : {
+ "min" : "4.0.0",
+ "max" : null
+ },
+ "IMG_ARC_NOFILL" : {
+ "min" : "4.0.0",
+ "max" : null
+ },
+ "IMG_ARC_PIE" : {
+ "min" : "4.0.0",
+ "max" : null
+ },
+ "IMG_ARC_ROUNDED" : {
+ "min" : "4.0.0",
+ "max" : null
+ },
+ "IMG_BELL" : {
+ "min" : "5.5.0",
+ "max" : null
+ },
+ "IMG_BESSEL" : {
+ "min" : "5.5.0",
+ "max" : null
+ },
+ "IMG_BICUBIC" : {
+ "min" : "5.5.0",
+ "max" : null
+ },
+ "IMG_BICUBIC_FIXED" : {
+ "min" : "5.5.0",
+ "max" : null
+ },
+ "IMG_BILINEAR_FIXED" : {
+ "min" : "5.5.0",
+ "max" : null
+ },
+ "IMG_BLACKMAN" : {
+ "min" : "5.5.0",
+ "max" : null
+ },
+ "IMG_BOX" : {
+ "min" : "5.5.0",
+ "max" : null
+ },
+ "IMG_BSPLINE" : {
+ "min" : "5.5.0",
+ "max" : null
+ },
+ "IMG_CATMULLROM" : {
+ "min" : "5.5.0",
+ "max" : null
+ },
+ "IMG_COLOR_BRUSHED" : {
+ "min" : "4.0.0",
+ "max" : null
+ },
+ "IMG_COLOR_STYLED" : {
+ "min" : "4.0.0",
+ "max" : null
+ },
+ "IMG_COLOR_STYLEDBRUSHED" : {
+ "min" : "4.0.0",
+ "max" : null
+ },
+ "IMG_COLOR_TILED" : {
+ "min" : "4.0.0",
+ "max" : null
+ },
+ "IMG_COLOR_TRANSPARENT" : {
+ "min" : "4.0.0",
+ "max" : null
+ },
+ "IMG_CROP_BLACK" : {
+ "min" : "5.5.0",
+ "max" : null
+ },
+ "IMG_CROP_DEFAULT" : {
+ "min" : "5.5.0",
+ "max" : null
+ },
+ "IMG_CROP_SIDES" : {
+ "min" : "5.5.0",
+ "max" : null
+ },
+ "IMG_CROP_THRESHOLD" : {
+ "min" : "5.5.0",
+ "max" : null
+ },
+ "IMG_CROP_TRANSPARENT" : {
+ "min" : "5.5.0",
+ "max" : null
+ },
+ "IMG_CROP_WHITE" : {
+ "min" : "5.5.0",
+ "max" : null
+ },
+ "IMG_EFFECT_ALPHABLEND" : {
+ "min" : "4.0.0",
+ "max" : null
+ },
+ "IMG_EFFECT_NORMAL" : {
+ "min" : "4.0.0",
+ "max" : null
+ },
+ "IMG_EFFECT_OVERLAY" : {
+ "min" : "4.0.0",
+ "max" : null
+ },
+ "IMG_EFFECT_REPLACE" : {
+ "min" : "4.0.0",
+ "max" : null
+ },
+ "IMG_FILTER_BRIGHTNESS" : {
+ "min" : "4.0.0",
+ "max" : null
+ },
+ "IMG_FILTER_COLORIZE" : {
+ "min" : "4.0.0",
+ "max" : null
+ },
+ "IMG_FILTER_CONTRAST" : {
+ "min" : "4.0.0",
+ "max" : null
+ },
+ "IMG_FILTER_EDGEDETECT" : {
+ "min" : "4.0.0",
+ "max" : null
+ },
+ "IMG_FILTER_EMBOSS" : {
+ "min" : "4.0.0",
+ "max" : null
+ },
+ "IMG_FILTER_GAUSSIAN_BLUR" : {
+ "min" : "4.0.0",
+ "max" : null
+ },
+ "IMG_FILTER_GRAYSCALE" : {
+ "min" : "4.0.0",
+ "max" : null
+ },
+ "IMG_FILTER_MEAN_REMOVAL" : {
+ "min" : "4.0.0",
+ "max" : null
+ },
+ "IMG_FILTER_NEGATE" : {
+ "min" : "4.0.0",
+ "max" : null
+ },
+ "IMG_FILTER_PIXELATE" : {
+ "min" : "5.3.0",
+ "max" : null
+ },
+ "IMG_FILTER_SELECTIVE_BLUR" : {
+ "min" : "4.0.0",
+ "max" : null
+ },
+ "IMG_FILTER_SMOOTH" : {
+ "min" : "4.0.0",
+ "max" : null
+ },
+ "IMG_FLIP_BOTH" : {
+ "min" : "5.5.0",
+ "max" : null
+ },
+ "IMG_FLIP_HORIZONTAL" : {
+ "min" : "5.5.0",
+ "max" : null
+ },
+ "IMG_FLIP_VERTICAL" : {
+ "min" : "5.5.0",
+ "max" : null
+ },
+ "IMG_GAUSSIAN" : {
+ "min" : "5.5.0",
+ "max" : null
+ },
+ "IMG_GD2_COMPRESSED" : {
+ "min" : "4.0.0",
+ "max" : null
+ },
+ "IMG_GD2_RAW" : {
+ "min" : "4.0.0",
+ "max" : null
+ },
+ "IMG_GENERALIZED_CUBIC" : {
+ "min" : "5.5.0",
+ "max" : null
+ },
+ "IMG_GIF" : {
+ "min" : "4.0.0",
+ "max" : null
+ },
+ "IMG_HAMMING" : {
+ "min" : "5.5.0",
+ "max" : null
+ },
+ "IMG_HANNING" : {
+ "min" : "5.5.0",
+ "max" : null
+ },
+ "IMG_HERMITE" : {
+ "min" : "5.5.0",
+ "max" : null
+ },
+ "IMG_JPEG" : {
+ "min" : "4.0.0",
+ "max" : null
+ },
+ "IMG_JPG" : {
+ "min" : "4.0.0",
+ "max" : null
+ },
+ "IMG_MITCHELL" : {
+ "min" : "5.5.0",
+ "max" : null
+ },
+ "IMG_NEAREST_NEIGHBOUR" : {
+ "min" : "5.5.0",
+ "max" : null
+ },
+ "IMG_PNG" : {
+ "min" : "4.0.0",
+ "max" : null
+ },
+ "IMG_POWER" : {
+ "min" : "5.5.0",
+ "max" : null
+ },
+ "IMG_QUADRATIC" : {
+ "min" : "5.5.0",
+ "max" : null
+ },
+ "IMG_SINC" : {
+ "min" : "5.5.0",
+ "max" : null
+ },
+ "IMG_TRIANGLE" : {
+ "min" : "5.5.0",
+ "max" : null
+ },
+ "IMG_WBMP" : {
+ "min" : "4.0.0",
+ "max" : null
+ },
+ "IMG_WEIGHTED4" : {
+ "min" : "5.5.0",
+ "max" : null
+ },
+ "IMG_XPM" : {
+ "min" : "4.0.0",
+ "max" : null
+ },
+ "INF" : {
+ "min" : "4.0.0",
+ "max" : null
+ },
+ "INFO_ALL" : {
+ "min" : "4.0.0",
+ "max" : null
+ },
+ "INFO_CONFIGURATION" : {
+ "min" : "4.0.0",
+ "max" : null
+ },
+ "INFO_CREDITS" : {
+ "min" : "4.0.0",
+ "max" : null
+ },
+ "INFO_ENVIRONMENT" : {
+ "min" : "4.0.0",
+ "max" : null
+ },
+ "INFO_GENERAL" : {
+ "min" : "4.0.0",
+ "max" : null
+ },
+ "INFO_LICENSE" : {
+ "min" : "4.0.0",
+ "max" : null
+ },
+ "INFO_MODULES" : {
+ "min" : "4.0.0",
+ "max" : null
+ },
+ "INFO_VARIABLES" : {
+ "min" : "4.0.0",
+ "max" : null
+ },
+ "INI_ALL" : {
+ "min" : "4.0.0",
+ "max" : null
+ },
+ "INI_PERDIR" : {
+ "min" : "4.0.0",
+ "max" : null
+ },
+ "INI_SCANNER_NORMAL" : {
+ "min" : "5.3.0",
+ "max" : null
+ },
+ "INI_SCANNER_RAW" : {
+ "min" : "5.3.0",
+ "max" : null
+ },
+ "INI_SYSTEM" : {
+ "min" : "4.0.0",
+ "max" : null
+ },
+ "INI_USER" : {
+ "min" : "4.0.0",
+ "max" : null
+ },
+ "INTL_ICU_VERSION" : {
+ "min" : "5.3.7",
+ "max" : null
+ },
+ "INTL_IDNA_VARIANT_2003" : {
+ "min" : "5.4.0",
+ "max" : null
+ },
+ "INTL_MAX_LOCALE_LEN" : {
+ "min" : "5.2.4",
+ "max" : null
+ },
+ "JSON_BIGINT_AS_STRING" : {
+ "min" : "5.4.0",
+ "max" : null
+ },
+ "JSON_ERROR_CTRL_CHAR" : {
+ "min" : "5.3.0",
+ "max" : null
+ },
+ "JSON_ERROR_DEPTH" : {
+ "min" : "5.3.0",
+ "max" : null
+ },
+ "JSON_ERROR_INF_OR_NAN" : {
+ "min" : "5.5.0",
+ "max" : null
+ },
+ "JSON_ERROR_NONE" : {
+ "min" : "5.3.0",
+ "max" : null
+ },
+ "JSON_ERROR_RECURSION" : {
+ "min" : "5.5.0",
+ "max" : null
+ },
+ "JSON_ERROR_STATE_MISMATCH" : {
+ "min" : "5.3.0",
+ "max" : null
+ },
+ "JSON_ERROR_SYNTAX" : {
+ "min" : "5.3.0",
+ "max" : null
+ },
+ "JSON_ERROR_UNSUPPORTED_TYPE" : {
+ "min" : "5.5.0",
+ "max" : null
+ },
+ "JSON_ERROR_UTF8" : {
+ "min" : "5.3.3",
+ "max" : null
+ },
+ "JSON_FORCE_OBJECT" : {
+ "min" : "5.3.0",
+ "max" : null
+ },
+ "JSON_HEX_AMP" : {
+ "min" : "5.3.0",
+ "max" : null
+ },
+ "JSON_HEX_APOS" : {
+ "min" : "5.3.0",
+ "max" : null
+ },
+ "JSON_HEX_QUOT" : {
+ "min" : "5.3.0",
+ "max" : null
+ },
+ "JSON_HEX_TAG" : {
+ "min" : "5.3.0",
+ "max" : null
+ },
+ "JSON_NUMERIC_CHECK" : {
+ "min" : "5.3.3",
+ "max" : null
+ },
+ "JSON_OBJECT_AS_ARRAY" : {
+ "min" : "5.4.0",
+ "max" : null
+ },
+ "JSON_PARTIAL_OUTPUT_ON_ERROR" : {
+ "min" : "5.5.0",
+ "max" : null
+ },
+ "JSON_PRETTY_PRINT" : {
+ "min" : "5.4.0",
+ "max" : null
+ },
+ "JSON_UNESCAPED_SLASHES" : {
+ "min" : "5.4.0",
+ "max" : null
+ },
+ "JSON_UNESCAPED_UNICODE" : {
+ "min" : "5.4.0",
+ "max" : null
+ },
+ "LC_ALL" : {
+ "min" : "4.0.0",
+ "max" : null
+ },
+ "LC_COLLATE" : {
+ "min" : "4.0.0",
+ "max" : null
+ },
+ "LC_CTYPE" : {
+ "min" : "4.0.0",
+ "max" : null
+ },
+ "LC_MESSAGES" : {
+ "min" : "4.0.0",
+ "max" : null
+ },
+ "LC_MONETARY" : {
+ "min" : "4.0.0",
+ "max" : null
+ },
+ "LC_NUMERIC" : {
+ "min" : "4.0.0",
+ "max" : null
+ },
+ "LC_TIME" : {
+ "min" : "4.0.0",
+ "max" : null
+ },
+ "LIBXML_COMPACT" : {
+ "min" : "5.1.0",
+ "max" : null
+ },
+ "LIBXML_DOTTED_VERSION" : {
+ "min" : "5.1.0",
+ "max" : null
+ },
+ "LIBXML_DTDATTR" : {
+ "min" : "5.1.0",
+ "max" : null
+ },
+ "LIBXML_DTDLOAD" : {
+ "min" : "5.1.0",
+ "max" : null
+ },
+ "LIBXML_DTDVALID" : {
+ "min" : "5.1.0",
+ "max" : null
+ },
+ "LIBXML_ERR_ERROR" : {
+ "min" : "5.1.0",
+ "max" : null
+ },
+ "LIBXML_ERR_FATAL" : {
+ "min" : "5.1.0",
+ "max" : null
+ },
+ "LIBXML_ERR_NONE" : {
+ "min" : "5.1.0",
+ "max" : null
+ },
+ "LIBXML_ERR_WARNING" : {
+ "min" : "5.1.0",
+ "max" : null
+ },
+ "LIBXML_HTML_NODEFDTD" : {
+ "min" : "5.4.0",
+ "max" : null
+ },
+ "LIBXML_HTML_NOIMPLIED" : {
+ "min" : "5.4.0",
+ "max" : null
+ },
+ "LIBXML_LOADED_VERSION" : {
+ "min" : "5.3.0",
+ "max" : null
+ },
+ "LIBXML_NOBLANKS" : {
+ "min" : "5.1.0",
+ "max" : null
+ },
+ "LIBXML_NOCDATA" : {
+ "min" : "5.1.0",
+ "max" : null
+ },
+ "LIBXML_NOEMPTYTAG" : {
+ "min" : "5.1.0",
+ "max" : null
+ },
+ "LIBXML_NOENT" : {
+ "min" : "5.1.0",
+ "max" : null
+ },
+ "LIBXML_NOERROR" : {
+ "min" : "5.1.0",
+ "max" : null
+ },
+ "LIBXML_NONET" : {
+ "min" : "5.1.0",
+ "max" : null
+ },
+ "LIBXML_NOWARNING" : {
+ "min" : "5.1.0",
+ "max" : null
+ },
+ "LIBXML_NOXMLDECL" : {
+ "min" : "5.1.0",
+ "max" : null
+ },
+ "LIBXML_NSCLEAN" : {
+ "min" : "5.1.0",
+ "max" : null
+ },
+ "LIBXML_PARSEHUGE" : {
+ "min" : "5.2.12",
+ "max" : null
+ },
+ "LIBXML_PEDANTIC" : {
+ "min" : "5.4.0",
+ "max" : null
+ },
+ "LIBXML_SCHEMA_CREATE" : {
+ "min" : "5.5.2",
+ "max" : null
+ },
+ "LIBXML_VERSION" : {
+ "min" : "5.1.0",
+ "max" : null
+ },
+ "LIBXML_XINCLUDE" : {
+ "min" : "5.1.0",
+ "max" : null
+ },
+ "LOCK_EX" : {
+ "min" : "4.0.0",
+ "max" : null
+ },
+ "LOCK_NB" : {
+ "min" : "4.0.0",
+ "max" : null
+ },
+ "LOCK_SH" : {
+ "min" : "4.0.0",
+ "max" : null
+ },
+ "LOCK_UN" : {
+ "min" : "4.0.0",
+ "max" : null
+ },
+ "LOG_ALERT" : {
+ "min" : "4.0.0",
+ "max" : null
+ },
+ "LOG_AUTH" : {
+ "min" : "4.0.0",
+ "max" : null
+ },
+ "LOG_AUTHPRIV" : {
+ "min" : "4.0.0",
+ "max" : null
+ },
+ "LOG_CONS" : {
+ "min" : "4.0.0",
+ "max" : null
+ },
+ "LOG_CRIT" : {
+ "min" : "4.0.0",
+ "max" : null
+ },
+ "LOG_CRON" : {
+ "min" : "4.0.0",
+ "max" : null
+ },
+ "LOG_DAEMON" : {
+ "min" : "4.0.0",
+ "max" : null
+ },
+ "LOG_DEBUG" : {
+ "min" : "4.0.0",
+ "max" : null
+ },
+ "LOG_EMERG" : {
+ "min" : "4.0.0",
+ "max" : null
+ },
+ "LOG_ERR" : {
+ "min" : "4.0.0",
+ "max" : null
+ },
+ "LOG_INFO" : {
+ "min" : "4.0.0",
+ "max" : null
+ },
+ "LOG_KERN" : {
+ "min" : "4.0.0",
+ "max" : null
+ },
+ "LOG_LOCAL0" : {
+ "min" : "4.0.0",
+ "max" : null
+ },
+ "LOG_LOCAL1" : {
+ "min" : "4.0.0",
+ "max" : null
+ },
+ "LOG_LOCAL2" : {
+ "min" : "4.0.0",
+ "max" : null
+ },
+ "LOG_LOCAL3" : {
+ "min" : "4.0.0",
+ "max" : null
+ },
+ "LOG_LOCAL4" : {
+ "min" : "4.0.0",
+ "max" : null
+ },
+ "LOG_LOCAL5" : {
+ "min" : "4.0.0",
+ "max" : null
+ },
+ "LOG_LOCAL6" : {
+ "min" : "4.0.0",
+ "max" : null
+ },
+ "LOG_LOCAL7" : {
+ "min" : "4.0.0",
+ "max" : null
+ },
+ "LOG_LPR" : {
+ "min" : "4.0.0",
+ "max" : null
+ },
+ "LOG_MAIL" : {
+ "min" : "4.0.0",
+ "max" : null
+ },
+ "LOG_NDELAY" : {
+ "min" : "4.0.0",
+ "max" : null
+ },
+ "LOG_NEWS" : {
+ "min" : "4.0.0",
+ "max" : null
+ },
+ "LOG_NOTICE" : {
+ "min" : "4.0.0",
+ "max" : null
+ },
+ "LOG_NOWAIT" : {
+ "min" : "4.0.0",
+ "max" : null
+ },
+ "LOG_ODELAY" : {
+ "min" : "4.0.0",
+ "max" : null
+ },
+ "LOG_PERROR" : {
+ "min" : "4.0.0",
+ "max" : null
+ },
+ "LOG_PID" : {
+ "min" : "4.0.0",
+ "max" : null
+ },
+ "LOG_SYSLOG" : {
+ "min" : "4.0.0",
+ "max" : null
+ },
+ "LOG_USER" : {
+ "min" : "4.0.0",
+ "max" : null
+ },
+ "LOG_UUCP" : {
+ "min" : "4.0.0",
+ "max" : null
+ },
+ "LOG_WARNING" : {
+ "min" : "4.0.0",
+ "max" : null
+ },
+ "MON_1" : {
+ "min" : "4.1.0",
+ "max" : null
+ },
+ "MON_10" : {
+ "min" : "4.1.0",
+ "max" : null
+ },
+ "MON_11" : {
+ "min" : "4.1.0",
+ "max" : null
+ },
+ "MON_12" : {
+ "min" : "4.1.0",
+ "max" : null
+ },
+ "MON_2" : {
+ "min" : "4.1.0",
+ "max" : null
+ },
+ "MON_3" : {
+ "min" : "4.1.0",
+ "max" : null
+ },
+ "MON_4" : {
+ "min" : "4.1.0",
+ "max" : null
+ },
+ "MON_5" : {
+ "min" : "4.1.0",
+ "max" : null
+ },
+ "MON_6" : {
+ "min" : "4.1.0",
+ "max" : null
+ },
+ "MON_7" : {
+ "min" : "4.1.0",
+ "max" : null
+ },
+ "MON_8" : {
+ "min" : "4.1.0",
+ "max" : null
+ },
+ "MON_9" : {
+ "min" : "4.1.0",
+ "max" : null
+ },
+ "MYSQLI_ASSOC" : {
+ "min" : "5.0.0",
+ "max" : null
+ },
+ "MYSQLI_ASYNC" : {
+ "min" : "5.3.0",
+ "max" : null
+ },
+ "MYSQLI_AUTO_INCREMENT_FLAG" : {
+ "min" : "5.0.0",
+ "max" : null
+ },
+ "MYSQLI_BINARY_FLAG" : {
+ "min" : "5.3.0",
+ "max" : null
+ },
+ "MYSQLI_BLOB_FLAG" : {
+ "min" : "5.0.0",
+ "max" : null
+ },
+ "MYSQLI_BOTH" : {
+ "min" : "5.0.0",
+ "max" : null
+ },
+ "MYSQLI_CLIENT_COMPRESS" : {
+ "min" : "5.0.0",
+ "max" : null
+ },
+ "MYSQLI_CLIENT_FOUND_ROWS" : {
+ "min" : "5.0.0",
+ "max" : null
+ },
+ "MYSQLI_CLIENT_IGNORE_SPACE" : {
+ "min" : "5.0.0",
+ "max" : null
+ },
+ "MYSQLI_CLIENT_INTERACTIVE" : {
+ "min" : "5.0.0",
+ "max" : null
+ },
+ "MYSQLI_CLIENT_NO_SCHEMA" : {
+ "min" : "5.0.0",
+ "max" : null
+ },
+ "MYSQLI_CLIENT_SSL" : {
+ "min" : "5.0.0",
+ "max" : null
+ },
+ "MYSQLI_CURSOR_TYPE_FOR_UPDATE" : {
+ "min" : "5.0.0",
+ "max" : null
+ },
+ "MYSQLI_CURSOR_TYPE_NO_CURSOR" : {
+ "min" : "5.0.0",
+ "max" : null
+ },
+ "MYSQLI_CURSOR_TYPE_READ_ONLY" : {
+ "min" : "5.0.0",
+ "max" : null
+ },
+ "MYSQLI_CURSOR_TYPE_SCROLLABLE" : {
+ "min" : "5.0.0",
+ "max" : null
+ },
+ "MYSQLI_DATA_TRUNCATED" : {
+ "min" : "5.1.0",
+ "max" : null
+ },
+ "MYSQLI_DEBUG_TRACE_ENABLED" : {
+ "min" : "5.3.0",
+ "max" : null
+ },
+ "MYSQLI_ENUM_FLAG" : {
+ "min" : "5.3.0",
+ "max" : null
+ },
+ "MYSQLI_GROUP_FLAG" : {
+ "min" : "5.0.0",
+ "max" : null
+ },
+ "MYSQLI_INIT_COMMAND" : {
+ "min" : "5.0.0",
+ "max" : null
+ },
+ "MYSQLI_MULTIPLE_KEY_FLAG" : {
+ "min" : "5.0.0",
+ "max" : null
+ },
+ "MYSQLI_NOT_NULL_FLAG" : {
+ "min" : "5.0.0",
+ "max" : null
+ },
+ "MYSQLI_NO_DATA" : {
+ "min" : "5.0.0",
+ "max" : null
+ },
+ "MYSQLI_NO_DEFAULT_VALUE_FLAG" : {
+ "min" : "5.3.0",
+ "max" : null
+ },
+ "MYSQLI_NUM" : {
+ "min" : "5.0.0",
+ "max" : null
+ },
+ "MYSQLI_NUM_FLAG" : {
+ "min" : "5.0.0",
+ "max" : null
+ },
+ "MYSQLI_ON_UPDATE_NOW_FLAG" : {
+ "min" : "5.3.0",
+ "max" : null
+ },
+ "MYSQLI_OPT_CAN_HANDLE_EXPIRED_PASSWORDS" : {
+ "min" : "5.4.12",
+ "max" : null
+ },
+ "MYSQLI_OPT_CONNECT_TIMEOUT" : {
+ "min" : "5.0.0",
+ "max" : null
+ },
+ "MYSQLI_OPT_INT_AND_FLOAT_NATIVE" : {
+ "min" : "5.3.0",
+ "max" : null
+ },
+ "MYSQLI_OPT_LOCAL_INFILE" : {
+ "min" : "5.0.0",
+ "max" : null
+ },
+ "MYSQLI_OPT_NET_CMD_BUFFER_SIZE" : {
+ "min" : "5.3.0",
+ "max" : null
+ },
+ "MYSQLI_OPT_NET_READ_BUFFER_SIZE" : {
+ "min" : "5.3.0",
+ "max" : null
+ },
+ "MYSQLI_OPT_SSL_VERIFY_SERVER_CERT" : {
+ "min" : "5.3.4",
+ "max" : null
+ },
+ "MYSQLI_PART_KEY_FLAG" : {
+ "min" : "5.0.0",
+ "max" : null
+ },
+ "MYSQLI_PRI_KEY_FLAG" : {
+ "min" : "5.0.0",
+ "max" : null
+ },
+ "MYSQLI_READ_DEFAULT_FILE" : {
+ "min" : "5.0.0",
+ "max" : null
+ },
+ "MYSQLI_READ_DEFAULT_GROUP" : {
+ "min" : "5.0.0",
+ "max" : null
+ },
+ "MYSQLI_REFRESH_BACKUP_LOG" : {
+ "min" : "5.3.0",
+ "max" : null
+ },
+ "MYSQLI_REFRESH_GRANT" : {
+ "min" : "5.3.0",
+ "max" : null
+ },
+ "MYSQLI_REFRESH_HOSTS" : {
+ "min" : "5.3.0",
+ "max" : null
+ },
+ "MYSQLI_REFRESH_LOG" : {
+ "min" : "5.3.0",
+ "max" : null
+ },
+ "MYSQLI_REFRESH_MASTER" : {
+ "min" : "5.3.0",
+ "max" : null
+ },
+ "MYSQLI_REFRESH_SLAVE" : {
+ "min" : "5.3.0",
+ "max" : null
+ },
+ "MYSQLI_REFRESH_STATUS" : {
+ "min" : "5.3.0",
+ "max" : null
+ },
+ "MYSQLI_REFRESH_TABLES" : {
+ "min" : "5.3.0",
+ "max" : null
+ },
+ "MYSQLI_REFRESH_THREADS" : {
+ "min" : "5.3.0",
+ "max" : null
+ },
+ "MYSQLI_REPORT_ALL" : {
+ "min" : "5.0.0",
+ "max" : null
+ },
+ "MYSQLI_REPORT_ERROR" : {
+ "min" : "5.0.0",
+ "max" : null
+ },
+ "MYSQLI_REPORT_INDEX" : {
+ "min" : "5.0.0",
+ "max" : null
+ },
+ "MYSQLI_REPORT_OFF" : {
+ "min" : "5.0.0",
+ "max" : null
+ },
+ "MYSQLI_REPORT_STRICT" : {
+ "min" : "5.0.0",
+ "max" : null
+ },
+ "MYSQLI_RPL_ADMIN" : {
+ "min" : "5.0.0",
+ "max" : "5.2.17"
+ },
+ "MYSQLI_RPL_MASTER" : {
+ "min" : "5.0.0",
+ "max" : "5.2.17"
+ },
+ "MYSQLI_RPL_SLAVE" : {
+ "min" : "5.0.0",
+ "max" : "5.2.17"
+ },
+ "MYSQLI_SERVER_PS_OUT_PARAMS" : {
+ "min" : "5.3.4",
+ "max" : null
+ },
+ "MYSQLI_SERVER_PUBLIC_KEY" : {
+ "min" : "5.5.0",
+ "max" : null
+ },
+ "MYSQLI_SERVER_QUERY_NO_GOOD_INDEX_USED" : {
+ "min" : "5.3.0",
+ "max" : null
+ },
+ "MYSQLI_SERVER_QUERY_NO_INDEX_USED" : {
+ "min" : "5.3.0",
+ "max" : null
+ },
+ "MYSQLI_SERVER_QUERY_WAS_SLOW" : {
+ "min" : "5.3.0",
+ "max" : null
+ },
+ "MYSQLI_SET_CHARSET_DIR" : {
+ "min" : "5.3.4",
+ "max" : null
+ },
+ "MYSQLI_SET_CHARSET_NAME" : {
+ "min" : "5.2.5",
+ "max" : null
+ },
+ "MYSQLI_SET_FLAG" : {
+ "min" : "5.0.0",
+ "max" : null
+ },
+ "MYSQLI_STMT_ATTR_CURSOR_TYPE" : {
+ "min" : "5.0.0",
+ "max" : null
+ },
+ "MYSQLI_STMT_ATTR_PREFETCH_ROWS" : {
+ "min" : "5.0.0",
+ "max" : null
+ },
+ "MYSQLI_STMT_ATTR_UPDATE_MAX_LENGTH" : {
+ "min" : "5.0.0",
+ "max" : null
+ },
+ "MYSQLI_STORE_RESULT" : {
+ "min" : "5.0.0",
+ "max" : null
+ },
+ "MYSQLI_TIMESTAMP_FLAG" : {
+ "min" : "5.0.0",
+ "max" : null
+ },
+ "MYSQLI_TRANS_COR_AND_CHAIN" : {
+ "min" : "5.5.0",
+ "max" : null
+ },
+ "MYSQLI_TRANS_COR_AND_NO_CHAIN" : {
+ "min" : "5.5.0",
+ "max" : null
+ },
+ "MYSQLI_TRANS_COR_NO_RELEASE" : {
+ "min" : "5.5.0",
+ "max" : null
+ },
+ "MYSQLI_TRANS_COR_RELEASE" : {
+ "min" : "5.5.0",
+ "max" : null
+ },
+ "MYSQLI_TRANS_START_READ_ONLY" : {
+ "min" : "5.5.0",
+ "max" : null
+ },
+ "MYSQLI_TRANS_START_READ_WRITE" : {
+ "min" : "5.5.0",
+ "max" : null
+ },
+ "MYSQLI_TRANS_START_WITH_CONSISTENT_SNAPSHOT" : {
+ "min" : "5.5.0",
+ "max" : null
+ },
+ "MYSQLI_TYPE_BIT" : {
+ "min" : "5.0.0",
+ "max" : null
+ },
+ "MYSQLI_TYPE_BLOB" : {
+ "min" : "5.0.0",
+ "max" : null
+ },
+ "MYSQLI_TYPE_CHAR" : {
+ "min" : "5.0.0",
+ "max" : null
+ },
+ "MYSQLI_TYPE_DATE" : {
+ "min" : "5.0.0",
+ "max" : null
+ },
+ "MYSQLI_TYPE_DATETIME" : {
+ "min" : "5.0.0",
+ "max" : null
+ },
+ "MYSQLI_TYPE_DECIMAL" : {
+ "min" : "5.0.0",
+ "max" : null
+ },
+ "MYSQLI_TYPE_DOUBLE" : {
+ "min" : "5.0.0",
+ "max" : null
+ },
+ "MYSQLI_TYPE_ENUM" : {
+ "min" : "5.0.0",
+ "max" : null
+ },
+ "MYSQLI_TYPE_FLOAT" : {
+ "min" : "5.0.0",
+ "max" : null
+ },
+ "MYSQLI_TYPE_GEOMETRY" : {
+ "min" : "5.0.0",
+ "max" : null
+ },
+ "MYSQLI_TYPE_INT24" : {
+ "min" : "5.0.0",
+ "max" : null
+ },
+ "MYSQLI_TYPE_INTERVAL" : {
+ "min" : "5.0.0",
+ "max" : null
+ },
+ "MYSQLI_TYPE_LONG" : {
+ "min" : "5.0.0",
+ "max" : null
+ },
+ "MYSQLI_TYPE_LONGLONG" : {
+ "min" : "5.0.0",
+ "max" : null
+ },
+ "MYSQLI_TYPE_LONG_BLOB" : {
+ "min" : "5.0.0",
+ "max" : null
+ },
+ "MYSQLI_TYPE_MEDIUM_BLOB" : {
+ "min" : "5.0.0",
+ "max" : null
+ },
+ "MYSQLI_TYPE_NEWDATE" : {
+ "min" : "5.0.0",
+ "max" : null
+ },
+ "MYSQLI_TYPE_NEWDECIMAL" : {
+ "min" : "5.0.0",
+ "max" : null
+ },
+ "MYSQLI_TYPE_NULL" : {
+ "min" : "5.0.0",
+ "max" : null
+ },
+ "MYSQLI_TYPE_SET" : {
+ "min" : "5.0.0",
+ "max" : null
+ },
+ "MYSQLI_TYPE_SHORT" : {
+ "min" : "5.0.0",
+ "max" : null
+ },
+ "MYSQLI_TYPE_STRING" : {
+ "min" : "5.0.0",
+ "max" : null
+ },
+ "MYSQLI_TYPE_TIME" : {
+ "min" : "5.0.0",
+ "max" : null
+ },
+ "MYSQLI_TYPE_TIMESTAMP" : {
+ "min" : "5.0.0",
+ "max" : null
+ },
+ "MYSQLI_TYPE_TINY" : {
+ "min" : "5.0.0",
+ "max" : null
+ },
+ "MYSQLI_TYPE_TINY_BLOB" : {
+ "min" : "5.0.0",
+ "max" : null
+ },
+ "MYSQLI_TYPE_VAR_STRING" : {
+ "min" : "5.0.0",
+ "max" : null
+ },
+ "MYSQLI_TYPE_YEAR" : {
+ "min" : "5.0.0",
+ "max" : null
+ },
+ "MYSQLI_UNIQUE_KEY_FLAG" : {
+ "min" : "5.0.0",
+ "max" : null
+ },
+ "MYSQLI_UNSIGNED_FLAG" : {
+ "min" : "5.0.0",
+ "max" : null
+ },
+ "MYSQLI_USE_RESULT" : {
+ "min" : "5.0.0",
+ "max" : null
+ },
+ "MYSQLI_ZEROFILL_FLAG" : {
+ "min" : "5.0.0",
+ "max" : null
+ },
+ "MYSQL_ASSOC" : {
+ "min" : "4.0.0",
+ "max" : null
+ },
+ "MYSQL_BOTH" : {
+ "min" : "4.0.0",
+ "max" : null
+ },
+ "MYSQL_CLIENT_COMPRESS" : {
+ "min" : "4.3.0",
+ "max" : null
+ },
+ "MYSQL_CLIENT_IGNORE_SPACE" : {
+ "min" : "4.3.0",
+ "max" : null
+ },
+ "MYSQL_CLIENT_INTERACTIVE" : {
+ "min" : "4.3.0",
+ "max" : null
+ },
+ "MYSQL_CLIENT_SSL" : {
+ "min" : "4.3.0",
+ "max" : null
+ },
+ "MYSQL_NUM" : {
+ "min" : "4.0.0",
+ "max" : null
+ },
+ "M_1_PI" : {
+ "min" : "4.0.0",
+ "max" : null
+ },
+ "M_2_PI" : {
+ "min" : "4.0.0",
+ "max" : null
+ },
+ "M_2_SQRTPI" : {
+ "min" : "4.0.0",
+ "max" : null
+ },
+ "M_E" : {
+ "min" : "4.0.0",
+ "max" : null
+ },
+ "M_EULER" : {
+ "min" : "4.0.0",
+ "max" : null
+ },
+ "M_LN10" : {
+ "min" : "4.0.0",
+ "max" : null
+ },
+ "M_LN2" : {
+ "min" : "4.0.0",
+ "max" : null
+ },
+ "M_LNPI" : {
+ "min" : "4.0.0",
+ "max" : null
+ },
+ "M_LOG10E" : {
+ "min" : "4.0.0",
+ "max" : null
+ },
+ "M_LOG2E" : {
+ "min" : "4.0.0",
+ "max" : null
+ },
+ "M_PI" : {
+ "min" : "4.0.0",
+ "max" : null
+ },
+ "M_PI_2" : {
+ "min" : "4.0.0",
+ "max" : null
+ },
+ "M_PI_4" : {
+ "min" : "4.0.0",
+ "max" : null
+ },
+ "M_SQRT1_2" : {
+ "min" : "4.0.0",
+ "max" : null
+ },
+ "M_SQRT2" : {
+ "min" : "4.0.0",
+ "max" : null
+ },
+ "M_SQRT3" : {
+ "min" : "4.0.0",
+ "max" : null
+ },
+ "M_SQRTPI" : {
+ "min" : "4.0.0",
+ "max" : null
+ },
+ "NAN" : {
+ "min" : "4.0.0",
+ "max" : null
+ },
+ "NOEXPR" : {
+ "min" : "4.1.0",
+ "max" : null
+ },
+ "NULL" : {
+ "min" : "4.0.0",
+ "max" : null
+ },
+ "PASSWORD_BCRYPT" : {
+ "min" : "5.5.0",
+ "max" : null
+ },
+ "PASSWORD_BCRYPT_DEFAULT_COST" : {
+ "min" : "5.5.0",
+ "max" : null
+ },
+ "PASSWORD_DEFAULT" : {
+ "min" : "5.5.0",
+ "max" : null
+ },
+ "PATHINFO_BASENAME" : {
+ "min" : "4.0.0",
+ "max" : null
+ },
+ "PATHINFO_DIRNAME" : {
+ "min" : "4.0.0",
+ "max" : null
+ },
+ "PATHINFO_EXTENSION" : {
+ "min" : "4.0.0",
+ "max" : null
+ },
+ "PATHINFO_FILENAME" : {
+ "min" : "4.0.0",
+ "max" : null
+ },
+ "PATH_SEPARATOR" : {
+ "min" : "4.3.0",
+ "max" : null
+ },
+ "PCNTL_E2BIG" : {
+ "min" : "5.3.4",
+ "max" : null
+ },
+ "PCNTL_EACCES" : {
+ "min" : "5.3.4",
+ "max" : null
+ },
+ "PCNTL_EAGAIN" : {
+ "min" : "5.3.4",
+ "max" : null
+ },
+ "PCNTL_ECHILD" : {
+ "min" : "5.3.4",
+ "max" : null
+ },
+ "PCNTL_EFAULT" : {
+ "min" : "5.3.4",
+ "max" : null
+ },
+ "PCNTL_EINTR" : {
+ "min" : "5.3.4",
+ "max" : null
+ },
+ "PCNTL_EINVAL" : {
+ "min" : "5.3.4",
+ "max" : null
+ },
+ "PCNTL_EIO" : {
+ "min" : "5.3.4",
+ "max" : null
+ },
+ "PCNTL_EISDIR" : {
+ "min" : "5.3.4",
+ "max" : null
+ },
+ "PCNTL_ELIBBAD" : {
+ "min" : "5.3.4",
+ "max" : null
+ },
+ "PCNTL_ELOOP" : {
+ "min" : "5.3.4",
+ "max" : null
+ },
+ "PCNTL_EMFILE" : {
+ "min" : "5.3.4",
+ "max" : null
+ },
+ "PCNTL_ENAMETOOLONG" : {
+ "min" : "5.3.4",
+ "max" : null
+ },
+ "PCNTL_ENFILE" : {
+ "min" : "5.3.4",
+ "max" : null
+ },
+ "PCNTL_ENOENT" : {
+ "min" : "5.3.4",
+ "max" : null
+ },
+ "PCNTL_ENOEXEC" : {
+ "min" : "5.3.4",
+ "max" : null
+ },
+ "PCNTL_ENOMEM" : {
+ "min" : "5.3.4",
+ "max" : null
+ },
+ "PCNTL_ENOTDIR" : {
+ "min" : "5.3.4",
+ "max" : null
+ },
+ "PCNTL_EPERM" : {
+ "min" : "5.3.4",
+ "max" : null
+ },
+ "PCNTL_ESRCH" : {
+ "min" : "5.3.4",
+ "max" : null
+ },
+ "PCNTL_ETXTBSY" : {
+ "min" : "5.3.4",
+ "max" : null
+ },
+ "PCRE_VERSION" : {
+ "min" : "5.2.4",
+ "max" : null
+ },
+ "PEAR_EXTENSION_DIR" : {
+ "min" : "4.0.0",
+ "max" : null
+ },
+ "PEAR_INSTALL_DIR" : {
+ "min" : "4.0.0",
+ "max" : null
+ },
+ "PHP_BINARY" : {
+ "min" : "5.4.0",
+ "max" : null
+ },
+ "PHP_BINDIR" : {
+ "min" : "4.0.0",
+ "max" : null
+ },
+ "PHP_CONFIG_FILE_PATH" : {
+ "min" : "4.0.0",
+ "max" : null
+ },
+ "PHP_CONFIG_FILE_SCAN_DIR" : {
+ "min" : "4.0.0",
+ "max" : null
+ },
+ "PHP_DATADIR" : {
+ "min" : "4.0.0",
+ "max" : null
+ },
+ "PHP_DEBUG" : {
+ "min" : "5.2.7",
+ "max" : null
+ },
+ "PHP_EOL" : {
+ "min" : "4.3.10",
+ "max" : null
+ },
+ "PHP_EXTENSION_DIR" : {
+ "min" : "4.0.0",
+ "max" : null
+ },
+ "PHP_EXTRA_VERSION" : {
+ "min" : "5.2.7",
+ "max" : null
+ },
+ "PHP_INT_MAX" : {
+ "min" : "4.4.0",
+ "max" : null
+ },
+ "PHP_INT_SIZE" : {
+ "min" : "4.4.0",
+ "max" : null
+ },
+ "PHP_LIBDIR" : {
+ "min" : "4.0.0",
+ "max" : null
+ },
+ "PHP_LOCALSTATEDIR" : {
+ "min" : "4.0.0",
+ "max" : null
+ },
+ "PHP_MAJOR_VERSION" : {
+ "min" : "5.2.7",
+ "max" : null
+ },
+ "PHP_MANDIR" : {
+ "min" : "5.3.7",
+ "max" : null
+ },
+ "PHP_MAXPATHLEN" : {
+ "min" : "5.3.0",
+ "max" : null
+ },
+ "PHP_MINOR_VERSION" : {
+ "min" : "5.2.7",
+ "max" : null
+ },
+ "PHP_OS" : {
+ "min" : "4.0.0",
+ "max" : null
+ },
+ "PHP_OUTPUT_HANDLER_CLEAN" : {
+ "min" : "5.4.0",
+ "max" : null
+ },
+ "PHP_OUTPUT_HANDLER_CLEANABLE" : {
+ "min" : "5.4.0",
+ "max" : null
+ },
+ "PHP_OUTPUT_HANDLER_CONT" : {
+ "min" : "4.0.0",
+ "max" : null
+ },
+ "PHP_OUTPUT_HANDLER_DISABLED" : {
+ "min" : "5.4.0",
+ "max" : null
+ },
+ "PHP_OUTPUT_HANDLER_END" : {
+ "min" : "4.0.0",
+ "max" : null
+ },
+ "PHP_OUTPUT_HANDLER_FINAL" : {
+ "min" : "5.4.0",
+ "max" : null
+ },
+ "PHP_OUTPUT_HANDLER_FLUSH" : {
+ "min" : "5.4.0",
+ "max" : null
+ },
+ "PHP_OUTPUT_HANDLER_FLUSHABLE" : {
+ "min" : "5.4.0",
+ "max" : null
+ },
+ "PHP_OUTPUT_HANDLER_REMOVABLE" : {
+ "min" : "5.4.0",
+ "max" : null
+ },
+ "PHP_OUTPUT_HANDLER_START" : {
+ "min" : "4.0.0",
+ "max" : null
+ },
+ "PHP_OUTPUT_HANDLER_STARTED" : {
+ "min" : "5.4.0",
+ "max" : null
+ },
+ "PHP_OUTPUT_HANDLER_STDFLAGS" : {
+ "min" : "5.4.0",
+ "max" : null
+ },
+ "PHP_OUTPUT_HANDLER_WRITE" : {
+ "min" : "5.4.0",
+ "max" : null
+ },
+ "PHP_PREFIX" : {
+ "min" : "4.3.0",
+ "max" : null
+ },
+ "PHP_QUERY_RFC1738" : {
+ "min" : "5.4.0",
+ "max" : null
+ },
+ "PHP_QUERY_RFC3986" : {
+ "min" : "5.4.0",
+ "max" : null
+ },
+ "PHP_RELEASE_VERSION" : {
+ "min" : "5.2.7",
+ "max" : null
+ },
+ "PHP_ROUND_HALF_DOWN" : {
+ "min" : "5.3.0",
+ "max" : null
+ },
+ "PHP_ROUND_HALF_EVEN" : {
+ "min" : "5.3.0",
+ "max" : null
+ },
+ "PHP_ROUND_HALF_ODD" : {
+ "min" : "5.3.0",
+ "max" : null
+ },
+ "PHP_ROUND_HALF_UP" : {
+ "min" : "5.3.0",
+ "max" : null
+ },
+ "PHP_SAPI" : {
+ "min" : "4.2.0",
+ "max" : null
+ },
+ "PHP_SHLIB_SUFFIX" : {
+ "min" : "4.3.0",
+ "max" : null
+ },
+ "PHP_SYSCONFDIR" : {
+ "min" : "4.0.0",
+ "max" : null
+ },
+ "PHP_URL_FRAGMENT" : {
+ "min" : "4.0.0",
+ "max" : null
+ },
+ "PHP_URL_HOST" : {
+ "min" : "4.0.0",
+ "max" : null
+ },
+ "PHP_URL_PASS" : {
+ "min" : "4.0.0",
+ "max" : null
+ },
+ "PHP_URL_PATH" : {
+ "min" : "4.0.0",
+ "max" : null
+ },
+ "PHP_URL_PORT" : {
+ "min" : "4.0.0",
+ "max" : null
+ },
+ "PHP_URL_QUERY" : {
+ "min" : "4.0.0",
+ "max" : null
+ },
+ "PHP_URL_SCHEME" : {
+ "min" : "4.0.0",
+ "max" : null
+ },
+ "PHP_URL_USER" : {
+ "min" : "4.0.0",
+ "max" : null
+ },
+ "PHP_VERSION" : {
+ "min" : "4.0.0",
+ "max" : null
+ },
+ "PHP_VERSION_ID" : {
+ "min" : "5.2.7",
+ "max" : null
+ },
+ "PHP_WINDOWS_NT_DOMAIN_CONTROLLER" : {
+ "min" : "5.3.0",
+ "max" : null
+ },
+ "PHP_WINDOWS_NT_SERVER" : {
+ "min" : "5.3.0",
+ "max" : null
+ },
+ "PHP_WINDOWS_NT_WORKSTATION" : {
+ "min" : "5.3.0",
+ "max" : null
+ },
+ "PHP_WINDOWS_VERSION_BUILD" : {
+ "min" : "5.3.0",
+ "max" : null
+ },
+ "PHP_WINDOWS_VERSION_MAJOR" : {
+ "min" : "5.3.0",
+ "max" : null
+ },
+ "PHP_WINDOWS_VERSION_MINOR" : {
+ "min" : "5.3.0",
+ "max" : null
+ },
+ "PHP_WINDOWS_VERSION_PLATFORM" : {
+ "min" : "5.3.0",
+ "max" : null
+ },
+ "PHP_WINDOWS_VERSION_PRODUCTTYPE" : {
+ "min" : "5.3.0",
+ "max" : null
+ },
+ "PHP_WINDOWS_VERSION_SP_MAJOR" : {
+ "min" : "5.3.0",
+ "max" : null
+ },
+ "PHP_WINDOWS_VERSION_SP_MINOR" : {
+ "min" : "5.3.0",
+ "max" : null
+ },
+ "PHP_WINDOWS_VERSION_SUITEMASK" : {
+ "min" : "5.3.0",
+ "max" : null
+ },
+ "PHP_ZTS" : {
+ "min" : "5.2.7",
+ "max" : null
+ },
+ "PM_STR" : {
+ "min" : "4.1.0",
+ "max" : null
+ },
+ "PNG_ALL_FILTERS" : {
+ "min" : "4.0.0",
+ "max" : null
+ },
+ "PNG_FILTER_AVG" : {
+ "min" : "4.0.0",
+ "max" : null
+ },
+ "PNG_FILTER_NONE" : {
+ "min" : "4.0.0",
+ "max" : null
+ },
+ "PNG_FILTER_PAETH" : {
+ "min" : "4.0.0",
+ "max" : null
+ },
+ "PNG_FILTER_SUB" : {
+ "min" : "4.0.0",
+ "max" : null
+ },
+ "PNG_FILTER_UP" : {
+ "min" : "4.0.0",
+ "max" : null
+ },
+ "PNG_NO_FILTER" : {
+ "min" : "4.0.0",
+ "max" : null
+ },
+ "POLL_ERR" : {
+ "min" : "5.3.0",
+ "max" : null
+ },
+ "POLL_HUP" : {
+ "min" : "5.3.0",
+ "max" : null
+ },
+ "POLL_IN" : {
+ "min" : "5.3.0",
+ "max" : null
+ },
+ "POLL_MSG" : {
+ "min" : "5.3.0",
+ "max" : null
+ },
+ "POLL_OUT" : {
+ "min" : "5.3.0",
+ "max" : null
+ },
+ "POLL_PRI" : {
+ "min" : "5.3.0",
+ "max" : null
+ },
+ "POSIX_F_OK" : {
+ "min" : "5.1.0",
+ "max" : null
+ },
+ "POSIX_R_OK" : {
+ "min" : "5.1.0",
+ "max" : null
+ },
+ "POSIX_S_IFBLK" : {
+ "min" : "5.1.0",
+ "max" : null
+ },
+ "POSIX_S_IFCHR" : {
+ "min" : "5.1.0",
+ "max" : null
+ },
+ "POSIX_S_IFIFO" : {
+ "min" : "5.1.0",
+ "max" : null
+ },
+ "POSIX_S_IFREG" : {
+ "min" : "5.1.0",
+ "max" : null
+ },
+ "POSIX_S_IFSOCK" : {
+ "min" : "5.1.0",
+ "max" : null
+ },
+ "POSIX_W_OK" : {
+ "min" : "5.1.0",
+ "max" : null
+ },
+ "POSIX_X_OK" : {
+ "min" : "5.1.0",
+ "max" : null
+ },
+ "PREG_BACKTRACK_LIMIT_ERROR" : {
+ "min" : "5.2.0",
+ "max" : null
+ },
+ "PREG_BAD_UTF8_ERROR" : {
+ "min" : "5.2.0",
+ "max" : null
+ },
+ "PREG_BAD_UTF8_OFFSET_ERROR" : {
+ "min" : "5.2.9",
+ "max" : null
+ },
+ "PREG_GREP_INVERT" : {
+ "min" : "4.0.0",
+ "max" : null
+ },
+ "PREG_INTERNAL_ERROR" : {
+ "min" : "5.2.0",
+ "max" : null
+ },
+ "PREG_NO_ERROR" : {
+ "min" : "5.2.0",
+ "max" : null
+ },
+ "PREG_OFFSET_CAPTURE" : {
+ "min" : "4.3.0",
+ "max" : null
+ },
+ "PREG_PATTERN_ORDER" : {
+ "min" : "4.0.0",
+ "max" : null
+ },
+ "PREG_RECURSION_LIMIT_ERROR" : {
+ "min" : "5.2.0",
+ "max" : null
+ },
+ "PREG_SET_ORDER" : {
+ "min" : "4.0.0",
+ "max" : null
+ },
+ "PREG_SPLIT_DELIM_CAPTURE" : {
+ "min" : "4.0.5",
+ "max" : null
+ },
+ "PREG_SPLIT_NO_EMPTY" : {
+ "min" : "4.0.0",
+ "max" : null
+ },
+ "PREG_SPLIT_OFFSET_CAPTURE" : {
+ "min" : "4.3.0",
+ "max" : null
+ },
+ "PRIO_PGRP" : {
+ "min" : "5.0.0",
+ "max" : null
+ },
+ "PRIO_PROCESS" : {
+ "min" : "5.0.0",
+ "max" : null
+ },
+ "PRIO_USER" : {
+ "min" : "5.0.0",
+ "max" : null
+ },
+ "PSFS_ERR_FATAL" : {
+ "min" : "4.0.0",
+ "max" : null
+ },
+ "PSFS_FEED_ME" : {
+ "min" : "4.0.0",
+ "max" : null
+ },
+ "PSFS_FLAG_FLUSH_CLOSE" : {
+ "min" : "4.0.0",
+ "max" : null
+ },
+ "PSFS_FLAG_FLUSH_INC" : {
+ "min" : "4.0.0",
+ "max" : null
+ },
+ "PSFS_FLAG_NORMAL" : {
+ "min" : "4.0.0",
+ "max" : null
+ },
+ "PSFS_PASS_ON" : {
+ "min" : "4.0.0",
+ "max" : null
+ },
+ "RADIXCHAR" : {
+ "min" : "4.1.0",
+ "max" : null
+ },
+ "SCANDIR_SORT_ASCENDING" : {
+ "min" : "5.4.0",
+ "max" : null
+ },
+ "SCANDIR_SORT_DESCENDING" : {
+ "min" : "5.4.0",
+ "max" : null
+ },
+ "SCANDIR_SORT_NONE" : {
+ "min" : "5.4.0",
+ "max" : null
+ },
+ "SEEK_CUR" : {
+ "min" : "4.0.0",
+ "max" : null
+ },
+ "SEEK_END" : {
+ "min" : "4.0.0",
+ "max" : null
+ },
+ "SEEK_SET" : {
+ "min" : "4.0.0",
+ "max" : null
+ },
+ "SEGV_ACCERR" : {
+ "min" : "5.3.0",
+ "max" : null
+ },
+ "SEGV_MAPERR" : {
+ "min" : "5.3.0",
+ "max" : null
+ },
+ "SIGABRT" : {
+ "min" : "4.1.0",
+ "max" : null
+ },
+ "SIGALRM" : {
+ "min" : "4.1.0",
+ "max" : null
+ },
+ "SIGBABY" : {
+ "min" : "4.1.0",
+ "max" : null
+ },
+ "SIGBUS" : {
+ "min" : "4.1.0",
+ "max" : null
+ },
+ "SIGCHLD" : {
+ "min" : "4.1.0",
+ "max" : null
+ },
+ "SIGCLD" : {
+ "min" : "4.1.0",
+ "max" : null
+ },
+ "SIGCONT" : {
+ "min" : "4.1.0",
+ "max" : null
+ },
+ "SIGFPE" : {
+ "min" : "4.1.0",
+ "max" : null
+ },
+ "SIGHUP" : {
+ "min" : "4.1.0",
+ "max" : null
+ },
+ "SIGILL" : {
+ "min" : "4.1.0",
+ "max" : null
+ },
+ "SIGINT" : {
+ "min" : "4.1.0",
+ "max" : null
+ },
+ "SIGIO" : {
+ "min" : "4.1.0",
+ "max" : null
+ },
+ "SIGIOT" : {
+ "min" : "4.1.0",
+ "max" : null
+ },
+ "SIGKILL" : {
+ "min" : "4.1.0",
+ "max" : null
+ },
+ "SIGPIPE" : {
+ "min" : "4.1.0",
+ "max" : null
+ },
+ "SIGPOLL" : {
+ "min" : "4.1.0",
+ "max" : null
+ },
+ "SIGPROF" : {
+ "min" : "4.1.0",
+ "max" : null
+ },
+ "SIGPWR" : {
+ "min" : "4.1.0",
+ "max" : null
+ },
+ "SIGQUIT" : {
+ "min" : "4.1.0",
+ "max" : null
+ },
+ "SIGSEGV" : {
+ "min" : "4.1.0",
+ "max" : null
+ },
+ "SIGSTKFLT" : {
+ "min" : "4.1.0",
+ "max" : null
+ },
+ "SIGSTOP" : {
+ "min" : "4.1.0",
+ "max" : null
+ },
+ "SIGSYS" : {
+ "min" : "4.1.0",
+ "max" : null
+ },
+ "SIGTERM" : {
+ "min" : "4.1.0",
+ "max" : null
+ },
+ "SIGTRAP" : {
+ "min" : "4.1.0",
+ "max" : null
+ },
+ "SIGTSTP" : {
+ "min" : "4.1.0",
+ "max" : null
+ },
+ "SIGTTIN" : {
+ "min" : "4.1.0",
+ "max" : null
+ },
+ "SIGTTOU" : {
+ "min" : "4.1.0",
+ "max" : null
+ },
+ "SIGURG" : {
+ "min" : "4.1.0",
+ "max" : null
+ },
+ "SIGUSR1" : {
+ "min" : "4.1.0",
+ "max" : null
+ },
+ "SIGUSR2" : {
+ "min" : "4.1.0",
+ "max" : null
+ },
+ "SIGVTALRM" : {
+ "min" : "4.1.0",
+ "max" : null
+ },
+ "SIGWINCH" : {
+ "min" : "4.1.0",
+ "max" : null
+ },
+ "SIGXCPU" : {
+ "min" : "4.1.0",
+ "max" : null
+ },
+ "SIGXFSZ" : {
+ "min" : "4.1.0",
+ "max" : null
+ },
+ "SIG_BLOCK" : {
+ "min" : "5.3.0",
+ "max" : null
+ },
+ "SIG_DFL" : {
+ "min" : "4.1.0",
+ "max" : null
+ },
+ "SIG_ERR" : {
+ "min" : "4.1.0",
+ "max" : null
+ },
+ "SIG_IGN" : {
+ "min" : "4.1.0",
+ "max" : null
+ },
+ "SIG_SETMASK" : {
+ "min" : "5.3.0",
+ "max" : null
+ },
+ "SIG_UNBLOCK" : {
+ "min" : "5.3.0",
+ "max" : null
+ },
+ "SI_ASYNCIO" : {
+ "min" : "5.3.0",
+ "max" : null
+ },
+ "SI_KERNEL" : {
+ "min" : "5.3.0",
+ "max" : null
+ },
+ "SI_MESGQ" : {
+ "min" : "5.3.0",
+ "max" : null
+ },
+ "SI_NOINFO" : {
+ "min" : "5.3.0",
+ "max" : null
+ },
+ "SI_QUEUE" : {
+ "min" : "5.3.0",
+ "max" : null
+ },
+ "SI_SIGIO" : {
+ "min" : "5.3.0",
+ "max" : null
+ },
+ "SI_TIMER" : {
+ "min" : "5.3.0",
+ "max" : null
+ },
+ "SI_TKILL" : {
+ "min" : "5.3.0",
+ "max" : null
+ },
+ "SI_USER" : {
+ "min" : "5.3.0",
+ "max" : null
+ },
+ "SORT_ASC" : {
+ "min" : "4.0.0",
+ "max" : null
+ },
+ "SORT_DESC" : {
+ "min" : "4.0.0",
+ "max" : null
+ },
+ "SORT_FLAG_CASE" : {
+ "min" : "5.4.0",
+ "max" : null
+ },
+ "SORT_LOCALE_STRING" : {
+ "min" : "4.0.0",
+ "max" : null
+ },
+ "SORT_NATURAL" : {
+ "min" : "5.4.0",
+ "max" : null
+ },
+ "SORT_NUMERIC" : {
+ "min" : "4.0.0",
+ "max" : null
+ },
+ "SORT_REGULAR" : {
+ "min" : "4.0.0",
+ "max" : null
+ },
+ "SORT_STRING" : {
+ "min" : "4.0.0",
+ "max" : null
+ },
+ "STDERR" : {
+ "min" : "4.3.0",
+ "max" : null
+ },
+ "STDIN" : {
+ "min" : "4.3.0",
+ "max" : null
+ },
+ "STDOUT" : {
+ "min" : "4.3.0",
+ "max" : null
+ },
+ "STREAM_BUFFER_FULL" : {
+ "min" : "5.3.0",
+ "max" : null
+ },
+ "STREAM_BUFFER_LINE" : {
+ "min" : "5.3.0",
+ "max" : null
+ },
+ "STREAM_BUFFER_NONE" : {
+ "min" : "5.3.0",
+ "max" : null
+ },
+ "STREAM_CAST_AS_STREAM" : {
+ "min" : "5.3.0",
+ "max" : null
+ },
+ "STREAM_CAST_FOR_SELECT" : {
+ "min" : "5.3.0",
+ "max" : null
+ },
+ "STREAM_CLIENT_ASYNC_CONNECT" : {
+ "min" : "4.0.0",
+ "max" : null
+ },
+ "STREAM_CLIENT_CONNECT" : {
+ "min" : "4.0.0",
+ "max" : null
+ },
+ "STREAM_CLIENT_PERSISTENT" : {
+ "min" : "4.0.0",
+ "max" : null
+ },
+ "STREAM_CRYPTO_METHOD_SSLv23_CLIENT" : {
+ "min" : "4.0.0",
+ "max" : null
+ },
+ "STREAM_CRYPTO_METHOD_SSLv23_SERVER" : {
+ "min" : "4.0.0",
+ "max" : null
+ },
+ "STREAM_CRYPTO_METHOD_SSLv2_CLIENT" : {
+ "min" : "4.0.0",
+ "max" : null
+ },
+ "STREAM_CRYPTO_METHOD_SSLv2_SERVER" : {
+ "min" : "4.0.0",
+ "max" : null
+ },
+ "STREAM_CRYPTO_METHOD_SSLv3_CLIENT" : {
+ "min" : "4.0.0",
+ "max" : null
+ },
+ "STREAM_CRYPTO_METHOD_SSLv3_SERVER" : {
+ "min" : "4.0.0",
+ "max" : null
+ },
+ "STREAM_CRYPTO_METHOD_TLS_CLIENT" : {
+ "min" : "4.0.0",
+ "max" : null
+ },
+ "STREAM_CRYPTO_METHOD_TLS_SERVER" : {
+ "min" : "4.0.0",
+ "max" : null
+ },
+ "STREAM_ENFORCE_SAFE_MODE" : {
+ "min" : "4.0.0",
+ "max" : "5.3.28"
+ },
+ "STREAM_FILTER_ALL" : {
+ "min" : "4.0.0",
+ "max" : null
+ },
+ "STREAM_FILTER_READ" : {
+ "min" : "4.0.0",
+ "max" : null
+ },
+ "STREAM_FILTER_WRITE" : {
+ "min" : "4.0.0",
+ "max" : null
+ },
+ "STREAM_IGNORE_URL" : {
+ "min" : "4.0.0",
+ "max" : null
+ },
+ "STREAM_IPPROTO_ICMP" : {
+ "min" : "5.1.0",
+ "max" : null
+ },
+ "STREAM_IPPROTO_IP" : {
+ "min" : "4.0.0",
+ "max" : null
+ },
+ "STREAM_IPPROTO_RAW" : {
+ "min" : "5.1.0",
+ "max" : null
+ },
+ "STREAM_IPPROTO_TCP" : {
+ "min" : "5.1.0",
+ "max" : null
+ },
+ "STREAM_IPPROTO_UDP" : {
+ "min" : "5.1.0",
+ "max" : null
+ },
+ "STREAM_IS_URL" : {
+ "min" : "5.2.4",
+ "max" : null
+ },
+ "STREAM_META_ACCESS" : {
+ "min" : "5.4.0",
+ "max" : null
+ },
+ "STREAM_META_GROUP" : {
+ "min" : "5.4.0",
+ "max" : null
+ },
+ "STREAM_META_GROUP_NAME" : {
+ "min" : "5.4.0",
+ "max" : null
+ },
+ "STREAM_META_OWNER" : {
+ "min" : "5.4.0",
+ "max" : null
+ },
+ "STREAM_META_OWNER_NAME" : {
+ "min" : "5.4.0",
+ "max" : null
+ },
+ "STREAM_META_TOUCH" : {
+ "min" : "5.4.0",
+ "max" : null
+ },
+ "STREAM_MKDIR_RECURSIVE" : {
+ "min" : "4.0.0",
+ "max" : null
+ },
+ "STREAM_MUST_SEEK" : {
+ "min" : "4.0.0",
+ "max" : null
+ },
+ "STREAM_NOTIFY_AUTH_REQUIRED" : {
+ "min" : "4.0.0",
+ "max" : null
+ },
+ "STREAM_NOTIFY_AUTH_RESULT" : {
+ "min" : "4.0.0",
+ "max" : null
+ },
+ "STREAM_NOTIFY_COMPLETED" : {
+ "min" : "4.0.0",
+ "max" : null
+ },
+ "STREAM_NOTIFY_CONNECT" : {
+ "min" : "4.0.0",
+ "max" : null
+ },
+ "STREAM_NOTIFY_FAILURE" : {
+ "min" : "4.0.0",
+ "max" : null
+ },
+ "STREAM_NOTIFY_FILE_SIZE_IS" : {
+ "min" : "4.0.0",
+ "max" : null
+ },
+ "STREAM_NOTIFY_MIME_TYPE_IS" : {
+ "min" : "4.0.0",
+ "max" : null
+ },
+ "STREAM_NOTIFY_PROGRESS" : {
+ "min" : "4.0.0",
+ "max" : null
+ },
+ "STREAM_NOTIFY_REDIRECTED" : {
+ "min" : "4.0.0",
+ "max" : null
+ },
+ "STREAM_NOTIFY_RESOLVE" : {
+ "min" : "4.0.0",
+ "max" : null
+ },
+ "STREAM_NOTIFY_SEVERITY_ERR" : {
+ "min" : "4.0.0",
+ "max" : null
+ },
+ "STREAM_NOTIFY_SEVERITY_INFO" : {
+ "min" : "4.0.0",
+ "max" : null
+ },
+ "STREAM_NOTIFY_SEVERITY_WARN" : {
+ "min" : "4.0.0",
+ "max" : null
+ },
+ "STREAM_OOB" : {
+ "min" : "4.0.0",
+ "max" : null
+ },
+ "STREAM_OPTION_BLOCKING" : {
+ "min" : "5.3.0",
+ "max" : null
+ },
+ "STREAM_OPTION_READ_BUFFER" : {
+ "min" : "5.3.0",
+ "max" : null
+ },
+ "STREAM_OPTION_READ_TIMEOUT" : {
+ "min" : "5.3.0",
+ "max" : null
+ },
+ "STREAM_OPTION_WRITE_BUFFER" : {
+ "min" : "5.3.0",
+ "max" : null
+ },
+ "STREAM_PEEK" : {
+ "min" : "4.0.0",
+ "max" : null
+ },
+ "STREAM_PF_INET" : {
+ "min" : "4.0.0",
+ "max" : null
+ },
+ "STREAM_PF_INET6" : {
+ "min" : "4.0.0",
+ "max" : null
+ },
+ "STREAM_PF_UNIX" : {
+ "min" : "4.0.0",
+ "max" : null
+ },
+ "STREAM_REPORT_ERRORS" : {
+ "min" : "4.0.0",
+ "max" : null
+ },
+ "STREAM_SERVER_BIND" : {
+ "min" : "4.0.0",
+ "max" : null
+ },
+ "STREAM_SERVER_LISTEN" : {
+ "min" : "4.0.0",
+ "max" : null
+ },
+ "STREAM_SHUT_RD" : {
+ "min" : "4.0.0",
+ "max" : null
+ },
+ "STREAM_SHUT_RDWR" : {
+ "min" : "4.0.0",
+ "max" : null
+ },
+ "STREAM_SHUT_WR" : {
+ "min" : "4.0.0",
+ "max" : null
+ },
+ "STREAM_SOCK_DGRAM" : {
+ "min" : "4.0.0",
+ "max" : null
+ },
+ "STREAM_SOCK_RAW" : {
+ "min" : "4.0.0",
+ "max" : null
+ },
+ "STREAM_SOCK_RDM" : {
+ "min" : "4.0.0",
+ "max" : null
+ },
+ "STREAM_SOCK_SEQPACKET" : {
+ "min" : "4.0.0",
+ "max" : null
+ },
+ "STREAM_SOCK_STREAM" : {
+ "min" : "4.0.0",
+ "max" : null
+ },
+ "STREAM_URL_STAT_LINK" : {
+ "min" : "4.0.0",
+ "max" : null
+ },
+ "STREAM_URL_STAT_QUIET" : {
+ "min" : "4.0.0",
+ "max" : null
+ },
+ "STREAM_USE_PATH" : {
+ "min" : "4.0.0",
+ "max" : null
+ },
+ "STR_PAD_BOTH" : {
+ "min" : "4.0.0",
+ "max" : null
+ },
+ "STR_PAD_LEFT" : {
+ "min" : "4.0.0",
+ "max" : null
+ },
+ "STR_PAD_RIGHT" : {
+ "min" : "4.0.0",
+ "max" : null
+ },
+ "SUNFUNCS_RET_DOUBLE" : {
+ "min" : "5.1.2",
+ "max" : null
+ },
+ "SUNFUNCS_RET_STRING" : {
+ "min" : "5.1.2",
+ "max" : null
+ },
+ "SUNFUNCS_RET_TIMESTAMP" : {
+ "min" : "5.1.2",
+ "max" : null
+ },
+ "THOUSEP" : {
+ "min" : "4.1.0",
+ "max" : null
+ },
+ "TRAP_BRKPT" : {
+ "min" : "5.3.0",
+ "max" : null
+ },
+ "TRAP_TRACE" : {
+ "min" : "5.3.0",
+ "max" : null
+ },
+ "TRUE" : {
+ "min" : "4.0.0",
+ "max" : null
+ },
+ "T_FMT" : {
+ "min" : "4.1.0",
+ "max" : null
+ },
+ "T_FMT_AMPM" : {
+ "min" : "4.1.0",
+ "max" : null
+ },
+ "ULOC_ACTUAL_LOCALE" : {
+ "min" : "5.2.0",
+ "max" : null
+ },
+ "ULOC_VALID_LOCALE" : {
+ "min" : "5.2.0",
+ "max" : null
+ },
+ "UPLOAD_ERR_CANT_WRITE" : {
+ "min" : "5.1.0",
+ "max" : null
+ },
+ "UPLOAD_ERR_EXTENSION" : {
+ "min" : "5.2.0",
+ "max" : null
+ },
+ "UPLOAD_ERR_FORM_SIZE" : {
+ "min" : "4.3.0",
+ "max" : null
+ },
+ "UPLOAD_ERR_INI_SIZE" : {
+ "min" : "4.3.0",
+ "max" : null
+ },
+ "UPLOAD_ERR_NO_FILE" : {
+ "min" : "4.3.0",
+ "max" : null
+ },
+ "UPLOAD_ERR_NO_TMP_DIR" : {
+ "min" : "4.3.10",
+ "max" : null
+ },
+ "UPLOAD_ERR_OK" : {
+ "min" : "4.3.0",
+ "max" : null
+ },
+ "UPLOAD_ERR_PARTIAL" : {
+ "min" : "4.3.0",
+ "max" : null
+ },
+ "U_AMBIGUOUS_ALIAS_WARNING" : {
+ "min" : "5.2.0",
+ "max" : null
+ },
+ "U_BAD_VARIABLE_DEFINITION" : {
+ "min" : "5.2.0",
+ "max" : null
+ },
+ "U_BRK_ASSIGN_ERROR" : {
+ "min" : "5.2.0",
+ "max" : null
+ },
+ "U_BRK_ERROR_LIMIT" : {
+ "min" : "5.2.0",
+ "max" : null
+ },
+ "U_BRK_ERROR_START" : {
+ "min" : "5.2.0",
+ "max" : null
+ },
+ "U_BRK_HEX_DIGITS_EXPECTED" : {
+ "min" : "5.2.0",
+ "max" : null
+ },
+ "U_BRK_INIT_ERROR" : {
+ "min" : "5.2.0",
+ "max" : null
+ },
+ "U_BRK_INTERNAL_ERROR" : {
+ "min" : "5.2.0",
+ "max" : null
+ },
+ "U_BRK_MALFORMED_RULE_TAG" : {
+ "min" : "5.2.0",
+ "max" : null
+ },
+ "U_BRK_MISMATCHED_PAREN" : {
+ "min" : "5.2.0",
+ "max" : null
+ },
+ "U_BRK_NEW_LINE_IN_QUOTED_STRING" : {
+ "min" : "5.2.0",
+ "max" : null
+ },
+ "U_BRK_RULE_EMPTY_SET" : {
+ "min" : "5.2.0",
+ "max" : null
+ },
+ "U_BRK_RULE_SYNTAX" : {
+ "min" : "5.2.0",
+ "max" : null
+ },
+ "U_BRK_SEMICOLON_EXPECTED" : {
+ "min" : "5.2.0",
+ "max" : null
+ },
+ "U_BRK_UNCLOSED_SET" : {
+ "min" : "5.2.0",
+ "max" : null
+ },
+ "U_BRK_UNDEFINED_VARIABLE" : {
+ "min" : "5.2.0",
+ "max" : null
+ },
+ "U_BRK_UNRECOGNIZED_OPTION" : {
+ "min" : "5.2.0",
+ "max" : null
+ },
+ "U_BRK_VARIABLE_REDFINITION" : {
+ "min" : "5.2.0",
+ "max" : null
+ },
+ "U_BUFFER_OVERFLOW_ERROR" : {
+ "min" : "5.2.0",
+ "max" : null
+ },
+ "U_CE_NOT_FOUND_ERROR" : {
+ "min" : "5.2.0",
+ "max" : null
+ },
+ "U_COLLATOR_VERSION_MISMATCH" : {
+ "min" : "5.2.0",
+ "max" : null
+ },
+ "U_DIFFERENT_UCA_VERSION" : {
+ "min" : "5.2.0",
+ "max" : null
+ },
+ "U_ENUM_OUT_OF_SYNC_ERROR" : {
+ "min" : "5.2.0",
+ "max" : null
+ },
+ "U_ERROR_LIMIT" : {
+ "min" : "5.2.0",
+ "max" : null
+ },
+ "U_ERROR_WARNING_LIMIT" : {
+ "min" : "5.2.0",
+ "max" : null
+ },
+ "U_ERROR_WARNING_START" : {
+ "min" : "5.2.0",
+ "max" : null
+ },
+ "U_FILE_ACCESS_ERROR" : {
+ "min" : "5.2.0",
+ "max" : null
+ },
+ "U_FMT_PARSE_ERROR_LIMIT" : {
+ "min" : "5.2.0",
+ "max" : null
+ },
+ "U_FMT_PARSE_ERROR_START" : {
+ "min" : "5.2.0",
+ "max" : null
+ },
+ "U_ILLEGAL_ARGUMENT_ERROR" : {
+ "min" : "5.2.0",
+ "max" : null
+ },
+ "U_ILLEGAL_CHARACTER" : {
+ "min" : "5.2.0",
+ "max" : null
+ },
+ "U_ILLEGAL_CHAR_FOUND" : {
+ "min" : "5.2.0",
+ "max" : null
+ },
+ "U_ILLEGAL_CHAR_IN_SEGMENT" : {
+ "min" : "5.2.0",
+ "max" : null
+ },
+ "U_ILLEGAL_ESCAPE_SEQUENCE" : {
+ "min" : "5.2.0",
+ "max" : null
+ },
+ "U_ILLEGAL_PAD_POSITION" : {
+ "min" : "5.2.0",
+ "max" : null
+ },
+ "U_INDEX_OUTOFBOUNDS_ERROR" : {
+ "min" : "5.2.0",
+ "max" : null
+ },
+ "U_INTERNAL_PROGRAM_ERROR" : {
+ "min" : "5.2.0",
+ "max" : null
+ },
+ "U_INTERNAL_TRANSLITERATOR_ERROR" : {
+ "min" : "5.2.0",
+ "max" : null
+ },
+ "U_INVALID_CHAR_FOUND" : {
+ "min" : "5.2.0",
+ "max" : null
+ },
+ "U_INVALID_FORMAT_ERROR" : {
+ "min" : "5.2.0",
+ "max" : null
+ },
+ "U_INVALID_FUNCTION" : {
+ "min" : "5.2.0",
+ "max" : null
+ },
+ "U_INVALID_ID" : {
+ "min" : "5.2.0",
+ "max" : null
+ },
+ "U_INVALID_PROPERTY_PATTERN" : {
+ "min" : "5.2.0",
+ "max" : null
+ },
+ "U_INVALID_RBT_SYNTAX" : {
+ "min" : "5.2.0",
+ "max" : null
+ },
+ "U_INVALID_STATE_ERROR" : {
+ "min" : "5.2.0",
+ "max" : null
+ },
+ "U_INVALID_TABLE_FILE" : {
+ "min" : "5.2.0",
+ "max" : null
+ },
+ "U_INVALID_TABLE_FORMAT" : {
+ "min" : "5.2.0",
+ "max" : null
+ },
+ "U_INVARIANT_CONVERSION_ERROR" : {
+ "min" : "5.2.0",
+ "max" : null
+ },
+ "U_MALFORMED_EXPONENTIAL_PATTERN" : {
+ "min" : "5.2.0",
+ "max" : null
+ },
+ "U_MALFORMED_PRAGMA" : {
+ "min" : "5.2.0",
+ "max" : null
+ },
+ "U_MALFORMED_RULE" : {
+ "min" : "5.2.0",
+ "max" : null
+ },
+ "U_MALFORMED_SET" : {
+ "min" : "5.2.0",
+ "max" : null
+ },
+ "U_MALFORMED_SYMBOL_REFERENCE" : {
+ "min" : "5.2.0",
+ "max" : null
+ },
+ "U_MALFORMED_UNICODE_ESCAPE" : {
+ "min" : "5.2.0",
+ "max" : null
+ },
+ "U_MALFORMED_VARIABLE_DEFINITION" : {
+ "min" : "5.2.0",
+ "max" : null
+ },
+ "U_MALFORMED_VARIABLE_REFERENCE" : {
+ "min" : "5.2.0",
+ "max" : null
+ },
+ "U_MEMORY_ALLOCATION_ERROR" : {
+ "min" : "5.2.0",
+ "max" : null
+ },
+ "U_MESSAGE_PARSE_ERROR" : {
+ "min" : "5.2.0",
+ "max" : null
+ },
+ "U_MISMATCHED_SEGMENT_DELIMITERS" : {
+ "min" : "5.2.0",
+ "max" : null
+ },
+ "U_MISPLACED_ANCHOR_START" : {
+ "min" : "5.2.0",
+ "max" : null
+ },
+ "U_MISPLACED_COMPOUND_FILTER" : {
+ "min" : "5.2.0",
+ "max" : null
+ },
+ "U_MISPLACED_CURSOR_OFFSET" : {
+ "min" : "5.2.0",
+ "max" : null
+ },
+ "U_MISPLACED_QUANTIFIER" : {
+ "min" : "5.2.0",
+ "max" : null
+ },
+ "U_MISSING_OPERATOR" : {
+ "min" : "5.2.0",
+ "max" : null
+ },
+ "U_MISSING_RESOURCE_ERROR" : {
+ "min" : "5.2.0",
+ "max" : null
+ },
+ "U_MISSING_SEGMENT_CLOSE" : {
+ "min" : "5.2.0",
+ "max" : null
+ },
+ "U_MULTIPLE_ANTE_CONTEXTS" : {
+ "min" : "5.2.0",
+ "max" : null
+ },
+ "U_MULTIPLE_COMPOUND_FILTERS" : {
+ "min" : "5.2.0",
+ "max" : null
+ },
+ "U_MULTIPLE_CURSORS" : {
+ "min" : "5.2.0",
+ "max" : null
+ },
+ "U_MULTIPLE_DECIMAL_SEPARATORS" : {
+ "min" : "5.2.0",
+ "max" : null
+ },
+ "U_MULTIPLE_DECIMAL_SEPERATORS" : {
+ "min" : "5.2.0",
+ "max" : null
+ },
+ "U_MULTIPLE_EXPONENTIAL_SYMBOLS" : {
+ "min" : "5.2.0",
+ "max" : null
+ },
+ "U_MULTIPLE_PAD_SPECIFIERS" : {
+ "min" : "5.2.0",
+ "max" : null
+ },
+ "U_MULTIPLE_PERCENT_SYMBOLS" : {
+ "min" : "5.2.0",
+ "max" : null
+ },
+ "U_MULTIPLE_PERMILL_SYMBOLS" : {
+ "min" : "5.2.0",
+ "max" : null
+ },
+ "U_MULTIPLE_POST_CONTEXTS" : {
+ "min" : "5.2.0",
+ "max" : null
+ },
+ "U_NO_SPACE_AVAILABLE" : {
+ "min" : "5.2.0",
+ "max" : null
+ },
+ "U_NO_WRITE_PERMISSION" : {
+ "min" : "5.2.0",
+ "max" : null
+ },
+ "U_PARSE_ERROR" : {
+ "min" : "5.2.0",
+ "max" : null
+ },
+ "U_PARSE_ERROR_LIMIT" : {
+ "min" : "5.2.0",
+ "max" : null
+ },
+ "U_PARSE_ERROR_START" : {
+ "min" : "5.2.0",
+ "max" : null
+ },
+ "U_PATTERN_SYNTAX_ERROR" : {
+ "min" : "5.2.0",
+ "max" : null
+ },
+ "U_PRIMARY_TOO_LONG_ERROR" : {
+ "min" : "5.2.0",
+ "max" : null
+ },
+ "U_REGEX_BAD_ESCAPE_SEQUENCE" : {
+ "min" : "5.2.0",
+ "max" : null
+ },
+ "U_REGEX_BAD_INTERVAL" : {
+ "min" : "5.2.0",
+ "max" : null
+ },
+ "U_REGEX_ERROR_LIMIT" : {
+ "min" : "5.2.0",
+ "max" : null
+ },
+ "U_REGEX_ERROR_START" : {
+ "min" : "5.2.0",
+ "max" : null
+ },
+ "U_REGEX_INTERNAL_ERROR" : {
+ "min" : "5.2.0",
+ "max" : null
+ },
+ "U_REGEX_INVALID_BACK_REF" : {
+ "min" : "5.2.0",
+ "max" : null
+ },
+ "U_REGEX_INVALID_FLAG" : {
+ "min" : "5.2.0",
+ "max" : null
+ },
+ "U_REGEX_INVALID_STATE" : {
+ "min" : "5.2.0",
+ "max" : null
+ },
+ "U_REGEX_LOOK_BEHIND_LIMIT" : {
+ "min" : "5.2.0",
+ "max" : null
+ },
+ "U_REGEX_MAX_LT_MIN" : {
+ "min" : "5.2.0",
+ "max" : null
+ },
+ "U_REGEX_MISMATCHED_PAREN" : {
+ "min" : "5.2.0",
+ "max" : null
+ },
+ "U_REGEX_NUMBER_TOO_BIG" : {
+ "min" : "5.2.0",
+ "max" : null
+ },
+ "U_REGEX_PROPERTY_SYNTAX" : {
+ "min" : "5.2.0",
+ "max" : null
+ },
+ "U_REGEX_RULE_SYNTAX" : {
+ "min" : "5.2.0",
+ "max" : null
+ },
+ "U_REGEX_SET_CONTAINS_STRING" : {
+ "min" : "5.2.0",
+ "max" : null
+ },
+ "U_REGEX_UNIMPLEMENTED" : {
+ "min" : "5.2.0",
+ "max" : null
+ },
+ "U_RESOURCE_TYPE_MISMATCH" : {
+ "min" : "5.2.0",
+ "max" : null
+ },
+ "U_RULE_MASK_ERROR" : {
+ "min" : "5.2.0",
+ "max" : null
+ },
+ "U_SAFECLONE_ALLOCATED_WARNING" : {
+ "min" : "5.2.0",
+ "max" : null
+ },
+ "U_SORT_KEY_TOO_SHORT_WARNING" : {
+ "min" : "5.2.0",
+ "max" : null
+ },
+ "U_STANDARD_ERROR_LIMIT" : {
+ "min" : "5.2.0",
+ "max" : null
+ },
+ "U_STATE_OLD_WARNING" : {
+ "min" : "5.2.0",
+ "max" : null
+ },
+ "U_STATE_TOO_OLD_ERROR" : {
+ "min" : "5.2.0",
+ "max" : null
+ },
+ "U_STRINGPREP_CHECK_BIDI_ERROR" : {
+ "min" : "5.2.0",
+ "max" : null
+ },
+ "U_STRINGPREP_PROHIBITED_ERROR" : {
+ "min" : "5.2.0",
+ "max" : null
+ },
+ "U_STRINGPREP_UNASSIGNED_ERROR" : {
+ "min" : "5.2.0",
+ "max" : null
+ },
+ "U_STRING_NOT_TERMINATED_WARNING" : {
+ "min" : "5.2.0",
+ "max" : null
+ },
+ "U_TOO_MANY_ALIASES_ERROR" : {
+ "min" : "5.2.0",
+ "max" : null
+ },
+ "U_TRAILING_BACKSLASH" : {
+ "min" : "5.2.0",
+ "max" : null
+ },
+ "U_TRUNCATED_CHAR_FOUND" : {
+ "min" : "5.2.0",
+ "max" : null
+ },
+ "U_UNCLOSED_SEGMENT" : {
+ "min" : "5.2.0",
+ "max" : null
+ },
+ "U_UNDEFINED_SEGMENT_REFERENCE" : {
+ "min" : "5.2.0",
+ "max" : null
+ },
+ "U_UNDEFINED_VARIABLE" : {
+ "min" : "5.2.0",
+ "max" : null
+ },
+ "U_UNEXPECTED_TOKEN" : {
+ "min" : "5.2.0",
+ "max" : null
+ },
+ "U_UNMATCHED_BRACES" : {
+ "min" : "5.2.0",
+ "max" : null
+ },
+ "U_UNQUOTED_SPECIAL" : {
+ "min" : "5.2.0",
+ "max" : null
+ },
+ "U_UNSUPPORTED_ATTRIBUTE" : {
+ "min" : "5.2.0",
+ "max" : null
+ },
+ "U_UNSUPPORTED_ERROR" : {
+ "min" : "5.2.0",
+ "max" : null
+ },
+ "U_UNSUPPORTED_ESCAPE_SEQUENCE" : {
+ "min" : "5.2.0",
+ "max" : null
+ },
+ "U_UNSUPPORTED_PROPERTY" : {
+ "min" : "5.2.0",
+ "max" : null
+ },
+ "U_UNTERMINATED_QUOTE" : {
+ "min" : "5.2.0",
+ "max" : null
+ },
+ "U_USELESS_COLLATOR_ERROR" : {
+ "min" : "5.2.0",
+ "max" : null
+ },
+ "U_USING_DEFAULT_WARNING" : {
+ "min" : "5.2.0",
+ "max" : null
+ },
+ "U_USING_FALLBACK_WARNING" : {
+ "min" : "5.2.0",
+ "max" : null
+ },
+ "U_VARIABLE_RANGE_EXHAUSTED" : {
+ "min" : "5.2.0",
+ "max" : null
+ },
+ "U_VARIABLE_RANGE_OVERLAP" : {
+ "min" : "5.2.0",
+ "max" : null
+ },
+ "U_ZERO_ERROR" : {
+ "min" : "5.2.0",
+ "max" : null
+ },
+ "WNOHANG" : {
+ "min" : "4.1.0",
+ "max" : null
+ },
+ "WUNTRACED" : {
+ "min" : "4.1.0",
+ "max" : null
+ },
+ "XML_ERROR_ASYNC_ENTITY" : {
+ "min" : "4.0.0",
+ "max" : null
+ },
+ "XML_ERROR_ATTRIBUTE_EXTERNAL_ENTITY_REF" : {
+ "min" : "4.0.0",
+ "max" : null
+ },
+ "XML_ERROR_BAD_CHAR_REF" : {
+ "min" : "4.0.0",
+ "max" : null
+ },
+ "XML_ERROR_BINARY_ENTITY_REF" : {
+ "min" : "4.0.0",
+ "max" : null
+ },
+ "XML_ERROR_DUPLICATE_ATTRIBUTE" : {
+ "min" : "4.0.0",
+ "max" : null
+ },
+ "XML_ERROR_EXTERNAL_ENTITY_HANDLING" : {
+ "min" : "4.0.0",
+ "max" : null
+ },
+ "XML_ERROR_INCORRECT_ENCODING" : {
+ "min" : "4.0.0",
+ "max" : null
+ },
+ "XML_ERROR_INVALID_TOKEN" : {
+ "min" : "4.0.0",
+ "max" : null
+ },
+ "XML_ERROR_JUNK_AFTER_DOC_ELEMENT" : {
+ "min" : "4.0.0",
+ "max" : null
+ },
+ "XML_ERROR_MISPLACED_XML_PI" : {
+ "min" : "4.0.0",
+ "max" : null
+ },
+ "XML_ERROR_NONE" : {
+ "min" : "4.0.0",
+ "max" : null
+ },
+ "XML_ERROR_NO_ELEMENTS" : {
+ "min" : "4.0.0",
+ "max" : null
+ },
+ "XML_ERROR_NO_MEMORY" : {
+ "min" : "4.0.0",
+ "max" : null
+ },
+ "XML_ERROR_PARAM_ENTITY_REF" : {
+ "min" : "4.0.0",
+ "max" : null
+ },
+ "XML_ERROR_PARTIAL_CHAR" : {
+ "min" : "4.0.0",
+ "max" : null
+ },
+ "XML_ERROR_RECURSIVE_ENTITY_REF" : {
+ "min" : "4.0.0",
+ "max" : null
+ },
+ "XML_ERROR_SYNTAX" : {
+ "min" : "4.0.0",
+ "max" : null
+ },
+ "XML_ERROR_TAG_MISMATCH" : {
+ "min" : "4.0.0",
+ "max" : null
+ },
+ "XML_ERROR_UNCLOSED_CDATA_SECTION" : {
+ "min" : "4.0.0",
+ "max" : null
+ },
+ "XML_ERROR_UNCLOSED_TOKEN" : {
+ "min" : "4.0.0",
+ "max" : null
+ },
+ "XML_ERROR_UNDEFINED_ENTITY" : {
+ "min" : "4.0.0",
+ "max" : null
+ },
+ "XML_ERROR_UNKNOWN_ENCODING" : {
+ "min" : "4.0.0",
+ "max" : null
+ },
+ "XML_OPTION_CASE_FOLDING" : {
+ "min" : "4.0.0",
+ "max" : null
+ },
+ "XML_OPTION_SKIP_TAGSTART" : {
+ "min" : "4.0.0",
+ "max" : null
+ },
+ "XML_OPTION_SKIP_WHITE" : {
+ "min" : "4.0.0",
+ "max" : null
+ },
+ "XML_OPTION_TARGET_ENCODING" : {
+ "min" : "4.0.0",
+ "max" : null
+ },
+ "XML_SAX_IMPL" : {
+ "min" : "4.0.0",
+ "max" : null
+ },
+ "YAML_ANY_BREAK" : {
+ "min" : "5.2.0",
+ "max" : null
+ },
+ "YAML_ANY_ENCODING" : {
+ "min" : "5.2.0",
+ "max" : null
+ },
+ "YAML_ANY_SCALAR_STYLE" : {
+ "min" : "5.2.0",
+ "max" : null
+ },
+ "YAML_BINARY_TAG" : {
+ "min" : "5.2.0",
+ "max" : null
+ },
+ "YAML_BOOL_TAG" : {
+ "min" : "5.2.0",
+ "max" : null
+ },
+ "YAML_CRLN_BREAK" : {
+ "min" : "5.2.0",
+ "max" : null
+ },
+ "YAML_CR_BREAK" : {
+ "min" : "5.2.0",
+ "max" : null
+ },
+ "YAML_DOUBLE_QUOTED_SCALAR_STYLE" : {
+ "min" : "5.2.0",
+ "max" : null
+ },
+ "YAML_FLOAT_TAG" : {
+ "min" : "5.2.0",
+ "max" : null
+ },
+ "YAML_FOLDED_SCALAR_STYLE" : {
+ "min" : "5.2.0",
+ "max" : null
+ },
+ "YAML_INT_TAG" : {
+ "min" : "5.2.0",
+ "max" : null
+ },
+ "YAML_LITERAL_SCALAR_STYLE" : {
+ "min" : "5.2.0",
+ "max" : null
+ },
+ "YAML_LN_BREAK" : {
+ "min" : "5.2.0",
+ "max" : null
+ },
+ "YAML_MAP_TAG" : {
+ "min" : "5.2.0",
+ "max" : null
+ },
+ "YAML_MERGE_TAG" : {
+ "min" : "5.2.0",
+ "max" : null
+ },
+ "YAML_NULL_TAG" : {
+ "min" : "5.2.0",
+ "max" : null
+ },
+ "YAML_PHP_TAG" : {
+ "min" : "5.2.0",
+ "max" : null
+ },
+ "YAML_PLAIN_SCALAR_STYLE" : {
+ "min" : "5.2.0",
+ "max" : null
+ },
+ "YAML_SEQ_TAG" : {
+ "min" : "5.2.0",
+ "max" : null
+ },
+ "YAML_SINGLE_QUOTED_SCALAR_STYLE" : {
+ "min" : "5.2.0",
+ "max" : null
+ },
+ "YAML_STR_TAG" : {
+ "min" : "5.2.0",
+ "max" : null
+ },
+ "YAML_TIMESTAMP_TAG" : {
+ "min" : "5.2.0",
+ "max" : null
+ },
+ "YAML_UTF16BE_ENCODING" : {
+ "min" : "5.2.0",
+ "max" : null
+ },
+ "YAML_UTF16LE_ENCODING" : {
+ "min" : "5.2.0",
+ "max" : null
+ },
+ "YAML_UTF8_ENCODING" : {
+ "min" : "5.2.0",
+ "max" : null
+ },
+ "YESEXPR" : {
+ "min" : "4.1.0",
+ "max" : null
+ },
+ "ZEND_DEBUG_BUILD" : {
+ "min" : "5.3.0",
+ "max" : null
+ },
+ "ZEND_MULTIBYTE" : {
+ "min" : "5.3.4",
+ "max" : "5.3.28"
+ },
+ "ZEND_THREAD_SAFE" : {
+ "min" : "4.0.0",
+ "max" : null
+ },
+ "__CLASS__" : {
+ "min" : "4.3.0",
+ "max" : null
+ },
+ "__COMPILER_HALT_OFFSET__" : {
+ "min" : "5.1.0",
+ "max" : null
+ },
+ "__DIR__" : {
+ "min" : "5.3.0",
+ "max" : null
+ },
+ "__FILE__" : {
+ "min" : "4.0.0",
+ "max" : null
+ },
+ "__FUNCTION__" : {
+ "min" : "4.3.0",
+ "max" : null
+ },
+ "__LINE__" : {
+ "min" : "4.0.0",
+ "max" : null
+ },
+ "__METHOD__" : {
+ "min" : "5.0.0",
+ "max" : null
+ },
+ "__NAMESPACE__" : {
+ "min" : "5.3.0",
+ "max" : null
+ },
+ "__TRAIT__" : {
+ "min" : "5.4.0",
+ "max" : null
+ },
+ "http\\Client\\Curl\\AUTH_ANY" : {
+ "min" : "5.3.0",
+ "max" : null
+ },
+ "http\\Client\\Curl\\AUTH_BASIC" : {
+ "min" : "5.3.0",
+ "max" : null
+ },
+ "http\\Client\\Curl\\AUTH_DIGEST" : {
+ "min" : "5.3.0",
+ "max" : null
+ },
+ "http\\Client\\Curl\\AUTH_DIGEST_IE" : {
+ "min" : "5.3.0",
+ "max" : null
+ },
+ "http\\Client\\Curl\\AUTH_GSSNEG" : {
+ "min" : "5.3.0",
+ "max" : null
+ },
+ "http\\Client\\Curl\\AUTH_NTLM" : {
+ "min" : "5.3.0",
+ "max" : null
+ },
+ "http\\Client\\Curl\\HTTP_VERSION_1_0" : {
+ "min" : "5.3.0",
+ "max" : null
+ },
+ "http\\Client\\Curl\\HTTP_VERSION_1_1" : {
+ "min" : "5.3.0",
+ "max" : null
+ },
+ "http\\Client\\Curl\\HTTP_VERSION_ANY" : {
+ "min" : "5.3.0",
+ "max" : null
+ },
+ "http\\Client\\Curl\\IPRESOLVE_ANY" : {
+ "min" : "5.3.0",
+ "max" : null
+ },
+ "http\\Client\\Curl\\IPRESOLVE_V4" : {
+ "min" : "5.3.0",
+ "max" : null
+ },
+ "http\\Client\\Curl\\IPRESOLVE_V6" : {
+ "min" : "5.3.0",
+ "max" : null
+ },
+ "http\\Client\\Curl\\POSTREDIR_301" : {
+ "min" : "5.3.0",
+ "max" : null
+ },
+ "http\\Client\\Curl\\POSTREDIR_302" : {
+ "min" : "5.3.0",
+ "max" : null
+ },
+ "http\\Client\\Curl\\POSTREDIR_ALL" : {
+ "min" : "5.3.0",
+ "max" : null
+ },
+ "http\\Client\\Curl\\PROXY_HTTP" : {
+ "min" : "5.3.0",
+ "max" : null
+ },
+ "http\\Client\\Curl\\PROXY_HTTP_1_0" : {
+ "min" : "5.3.0",
+ "max" : null
+ },
+ "http\\Client\\Curl\\PROXY_SOCKS4" : {
+ "min" : "5.3.0",
+ "max" : null
+ },
+ "http\\Client\\Curl\\PROXY_SOCKS4A" : {
+ "min" : "5.3.0",
+ "max" : null
+ },
+ "http\\Client\\Curl\\PROXY_SOCKS5" : {
+ "min" : "5.3.0",
+ "max" : null
+ },
+ "http\\Client\\Curl\\PROXY_SOCKS5_HOSTNAME" : {
+ "min" : "5.3.0",
+ "max" : null
+ },
+ "http\\Client\\Curl\\SSL_VERSION_ANY" : {
+ "min" : "5.3.0",
+ "max" : null
+ },
+ "http\\Client\\Curl\\SSL_VERSION_SSLv2" : {
+ "min" : "5.3.0",
+ "max" : null
+ },
+ "http\\Client\\Curl\\SSL_VERSION_SSLv3" : {
+ "min" : "5.3.0",
+ "max" : null
+ },
+ "http\\Client\\Curl\\SSL_VERSION_TLSv1" : {
+ "min" : "5.3.0",
+ "max" : null
+ }
+ },
+ "classMethods" : {
+ "DateTime" : {
+ "diff" : {
+ "min" : "5.3.0",
+ "max" : null
+ }
+ },
+ "Directory" : {
+ "close" : {
+ "min" : "4.0.0",
+ "max" : null
+ },
+ "read" : {
+ "min" : "4.0.0",
+ "max" : null
+ },
+ "rewind" : {
+ "min" : "4.0.0",
+ "max" : null
+ }
+ },
+ "php_user_filter" : {
+ "filter" : {
+ "min" : "5.0.0",
+ "max" : null
+ },
+ "onClose" : {
+ "min" : "5.0.0",
+ "max" : null
+ },
+ "onCreate" : {
+ "min" : "5.0.0",
+ "max" : null
+ }
+ }
+ },
"functions_windows" : {
"apache_child_terminate" : "",
"chroot" : "",
"getrusage" : "",
"imagecreatefromxpm" : "",
"lchgrp" : "",
"lchown" : "",
"nl_langinfo" : "",
"strptime" : "",
"sys_getloadavg" : "",
"checkdnsrr" : "5.3.0",
"dns_get_record" : "5.3.0",
"fnmatch" : "5.3.0",
"getmxrr" : "5.3.0",
"getopt" : "5.3.0",
"imagecolorclosesthwb" : "5.3.0",
"inet_ntop" : "5.3.0",
"inet_pton" : "5.3.0",
"link" : "5.3.0",
"linkinfo" : "5.3.0",
"readlink" : "5.3.0",
"socket_create_pair" : "5.3.0",
"stream_socket_pair" : "5.3.0",
"symlink" : "5.3.0",
"time_nanosleep" : "5.3.0",
"time_sleep_until" : "5.3.0"
}
}
diff --git a/scripts/update_compat_info.php b/scripts/update_compat_info.php
index e5c06896..c4fdef66 100755
--- a/scripts/update_compat_info.php
+++ b/scripts/update_compat_info.php
@@ -1,114 +1,138 @@
#!/usr/bin/env php
<?php
require_once dirname(__FILE__).'/__init_script__.php';
$target = 'resources/php_compat_info.json';
echo "Purpose: Updates {$target} used by ArcanistXHPASTLinter.\n";
require_once 'vendor/autoload.php';
$output = array();
$output['@'.'generated'] = true;
$output['params'] = array();
$output['functions'] = array();
$output['classes'] = array();
$output['interfaces'] = array();
+$output['constants'] = array();
+$output['classMethods'] = array();
$references = array(
new \Bartlett\CompatInfo\Reference\Extension\ApcExtension(),
new \Bartlett\CompatInfo\Reference\Extension\CoreExtension(),
new \Bartlett\CompatInfo\Reference\Extension\CurlExtension(),
new \Bartlett\CompatInfo\Reference\Extension\DateExtension(),
new \Bartlett\CompatInfo\Reference\Extension\FileinfoExtension(),
new \Bartlett\CompatInfo\Reference\Extension\GdExtension(),
new \Bartlett\CompatInfo\Reference\Extension\GettextExtension(),
new \Bartlett\CompatInfo\Reference\Extension\HttpExtension(),
new \Bartlett\CompatInfo\Reference\Extension\ImagickExtension(),
new \Bartlett\CompatInfo\Reference\Extension\IntlExtension(),
new \Bartlett\CompatInfo\Reference\Extension\JsonExtension(),
new \Bartlett\CompatInfo\Reference\Extension\LibxmlExtension(),
new \Bartlett\CompatInfo\Reference\Extension\MysqlExtension(),
new \Bartlett\CompatInfo\Reference\Extension\MysqliExtension(),
new \Bartlett\CompatInfo\Reference\Extension\PcntlExtension(),
new \Bartlett\CompatInfo\Reference\Extension\PcreExtension(),
new \Bartlett\CompatInfo\Reference\Extension\PdoExtension(),
new \Bartlett\CompatInfo\Reference\Extension\PharExtension(),
new \Bartlett\CompatInfo\Reference\Extension\PosixExtension(),
new \Bartlett\CompatInfo\Reference\Extension\ReflectionExtension(),
new \Bartlett\CompatInfo\Reference\Extension\SimplexmlExtension(),
new \Bartlett\CompatInfo\Reference\Extension\StandardExtension(),
new \Bartlett\CompatInfo\Reference\Extension\SplExtension(),
new \Bartlett\CompatInfo\Reference\Extension\XmlExtension(),
new \Bartlett\CompatInfo\Reference\Extension\XmlreaderExtension(),
new \Bartlett\CompatInfo\Reference\Extension\XmlwriterExtension(),
new \Bartlett\CompatInfo\Reference\Extension\YamlExtension(),
);
foreach ($references as $reference) {
foreach ($reference->getFunctions() as $function => $compat) {
$output['functions'][$function] = array(
'min' => nonempty($compat['php.min'], null),
'max' => nonempty($compat['php.max'], null),
);
if (idx($compat, 'parameters')) {
$output['params'][$function] = array_map(
'trim', explode(',', $compat['parameters']));
}
}
foreach ($reference->getInterfaces() as $interface => $compat) {
$output['interfaces'][$interface] = array(
'min' => nonempty($compat['php.min'], null),
'max' => nonempty($compat['php.max'], null),
);
}
foreach ($reference->getClasses() as $class => $compat) {
$output['classes'][$class] = array(
'min' => nonempty($compat['php.min'], null),
'max' => nonempty($compat['php.max'], null),
);
}
+
+ foreach ($reference->getConstants() as $constant => $compat) {
+ $output['constants'][$constant] = array(
+ 'min' => nonempty($compat['php.min'], null),
+ 'max' => nonempty($compat['php.max'], null),
+ );
+ }
+
+ foreach ($reference->getClassMethods() as $class => $methods) {
+ if (!array_key_exists($class, $output['classMethods'])) {
+ $output['classMethods'][$class] = array();
+ }
+
+ foreach ($methods as $method => $compat) {
+ $output['classMethods'][$class][$method] = array(
+ 'min' => nonempty($compat['php.min'], null),
+ 'max' => nonempty($compat['php.max'], null),
+ );
+ }
+ }
}
ksort($output['params']);
ksort($output['functions']);
ksort($output['classes']);
ksort($output['interfaces']);
+ksort($output['constants']);
+ksort($output['classMethods']);
// Grepped from PHP Manual.
$output['functions_windows'] = array(
'apache_child_terminate' => '',
'chroot' => '',
'getrusage' => '',
'imagecreatefromxpm' => '',
'lchgrp' => '',
'lchown' => '',
'nl_langinfo' => '',
'strptime' => '',
'sys_getloadavg' => '',
'checkdnsrr' => '5.3.0',
'dns_get_record' => '5.3.0',
'fnmatch' => '5.3.0',
'getmxrr' => '5.3.0',
'getopt' => '5.3.0',
'imagecolorclosesthwb' => '5.3.0',
'inet_ntop' => '5.3.0',
'inet_pton' => '5.3.0',
'link' => '5.3.0',
'linkinfo' => '5.3.0',
'readlink' => '5.3.0',
'socket_create_pair' => '5.3.0',
'stream_socket_pair' => '5.3.0',
'symlink' => '5.3.0',
'time_nanosleep' => '5.3.0',
'time_sleep_until' => '5.3.0',
);
file_put_contents(
phutil_get_library_root('arcanist').'/../'.$target,
id(new PhutilJSON())->encodeFormatted($output));
echo "Done.\n";
diff --git a/src/lint/linter/ArcanistXHPASTLinter.php b/src/lint/linter/ArcanistXHPASTLinter.php
index 8bb5f85b..55e39b12 100644
--- a/src/lint/linter/ArcanistXHPASTLinter.php
+++ b/src/lint/linter/ArcanistXHPASTLinter.php
@@ -1,2547 +1,2562 @@
<?php
/**
* Uses XHPAST to apply lint rules to PHP.
*/
final class ArcanistXHPASTLinter extends ArcanistBaseXHPASTLinter {
const LINT_PHP_SYNTAX_ERROR = 1;
const LINT_UNABLE_TO_PARSE = 2;
const LINT_VARIABLE_VARIABLE = 3;
const LINT_EXTRACT_USE = 4;
const LINT_UNDECLARED_VARIABLE = 5;
const LINT_PHP_SHORT_TAG = 6;
const LINT_PHP_ECHO_TAG = 7;
const LINT_PHP_CLOSE_TAG = 8;
const LINT_NAMING_CONVENTIONS = 9;
const LINT_IMPLICIT_CONSTRUCTOR = 10;
const LINT_DYNAMIC_DEFINE = 12;
const LINT_STATIC_THIS = 13;
const LINT_PREG_QUOTE_MISUSE = 14;
const LINT_PHP_OPEN_TAG = 15;
const LINT_TODO_COMMENT = 16;
const LINT_EXIT_EXPRESSION = 17;
const LINT_COMMENT_STYLE = 18;
const LINT_CLASS_FILENAME_MISMATCH = 19;
const LINT_TAUTOLOGICAL_EXPRESSION = 20;
const LINT_PLUS_OPERATOR_ON_STRINGS = 21;
const LINT_DUPLICATE_KEYS_IN_ARRAY = 22;
const LINT_REUSED_ITERATORS = 23;
const LINT_BRACE_FORMATTING = 24;
const LINT_PARENTHESES_SPACING = 25;
const LINT_CONTROL_STATEMENT_SPACING = 26;
const LINT_BINARY_EXPRESSION_SPACING = 27;
const LINT_ARRAY_INDEX_SPACING = 28;
const LINT_RAGGED_CLASSTREE_EDGE = 29;
const LINT_IMPLICIT_FALLTHROUGH = 30;
const LINT_PHP_53_FEATURES = 31;
const LINT_REUSED_AS_ITERATOR = 32;
const LINT_COMMENT_SPACING = 34;
const LINT_PHP_54_FEATURES = 35;
const LINT_SLOWNESS = 36;
const LINT_CLOSING_CALL_PAREN = 37;
const LINT_CLOSING_DECL_PAREN = 38;
const LINT_REUSED_ITERATOR_REFERENCE = 39;
const LINT_KEYWORD_CASING = 40;
const LINT_DOUBLE_QUOTE = 41;
const LINT_ELSEIF_USAGE = 42;
const LINT_SEMICOLON_SPACING = 43;
const LINT_CONCATENATION_OPERATOR = 44;
private $naminghook;
private $switchhook;
public function getInfoName() {
return 'XHPAST Lint';
}
public function getInfoDescription() {
return pht(
'Use XHPAST to enforce Phabricator coding conventions on PHP source '.
'files. This linter is intended for use in Phabricator libraries and '.
'extensions, and enforces some Phabricator-specific style rules. It '.
'may not work well for general PHP source.');
}
public function getLintNameMap() {
return array(
self::LINT_PHP_SYNTAX_ERROR => 'PHP Syntax Error!',
self::LINT_UNABLE_TO_PARSE => 'Unable to Parse',
self::LINT_VARIABLE_VARIABLE => 'Use of Variable Variable',
self::LINT_EXTRACT_USE => 'Use of extract()',
self::LINT_UNDECLARED_VARIABLE => 'Use of Undeclared Variable',
self::LINT_PHP_SHORT_TAG => 'Use of Short Tag "<?"',
self::LINT_PHP_ECHO_TAG => 'Use of Echo Tag "<?="',
self::LINT_PHP_CLOSE_TAG => 'Use of Close Tag "?>"',
self::LINT_NAMING_CONVENTIONS => 'Naming Conventions',
self::LINT_IMPLICIT_CONSTRUCTOR => 'Implicit Constructor',
self::LINT_DYNAMIC_DEFINE => 'Dynamic define()',
self::LINT_STATIC_THIS => 'Use of $this in Static Context',
self::LINT_PREG_QUOTE_MISUSE => 'Misuse of preg_quote()',
self::LINT_PHP_OPEN_TAG => 'Expected Open Tag',
self::LINT_TODO_COMMENT => 'TODO Comment',
self::LINT_EXIT_EXPRESSION => 'Exit Used as Expression',
self::LINT_COMMENT_STYLE => 'Comment Style',
self::LINT_CLASS_FILENAME_MISMATCH => 'Class-Filename Mismatch',
self::LINT_TAUTOLOGICAL_EXPRESSION => 'Tautological Expression',
self::LINT_PLUS_OPERATOR_ON_STRINGS => 'Not String Concatenation',
self::LINT_DUPLICATE_KEYS_IN_ARRAY => 'Duplicate Keys in Array',
self::LINT_REUSED_ITERATORS => 'Reuse of Iterator Variable',
self::LINT_BRACE_FORMATTING => 'Brace placement',
self::LINT_PARENTHESES_SPACING => 'Spaces Inside Parentheses',
self::LINT_CONTROL_STATEMENT_SPACING => 'Space After Control Statement',
self::LINT_BINARY_EXPRESSION_SPACING => 'Space Around Binary Operator',
self::LINT_ARRAY_INDEX_SPACING => 'Spacing Before Array Index',
self::LINT_RAGGED_CLASSTREE_EDGE => 'Class Not abstract Or final',
self::LINT_IMPLICIT_FALLTHROUGH => 'Implicit Fallthrough',
self::LINT_PHP_53_FEATURES => 'Use Of PHP 5.3 Features',
self::LINT_PHP_54_FEATURES => 'Use Of PHP 5.4 Features',
self::LINT_REUSED_AS_ITERATOR => 'Variable Reused As Iterator',
self::LINT_COMMENT_SPACING => 'Comment Spaces',
self::LINT_SLOWNESS => 'Slow Construct',
self::LINT_CLOSING_CALL_PAREN => 'Call Formatting',
self::LINT_CLOSING_DECL_PAREN => 'Declaration Formatting',
self::LINT_REUSED_ITERATOR_REFERENCE => 'Reuse of Iterator References',
self::LINT_KEYWORD_CASING => 'Keyword Conventions',
self::LINT_DOUBLE_QUOTE => 'Unnecessary Double Quotes',
self::LINT_ELSEIF_USAGE => 'ElseIf Usage',
self::LINT_SEMICOLON_SPACING => 'Semicolon Spacing',
self::LINT_CONCATENATION_OPERATOR => 'Concatenation Spacing',
);
}
public function getLinterName() {
return 'XHP';
}
public function getLinterConfigurationName() {
return 'xhpast';
}
public function getLintSeverityMap() {
$disabled = ArcanistLintSeverity::SEVERITY_DISABLED;
$advice = ArcanistLintSeverity::SEVERITY_ADVICE;
$warning = ArcanistLintSeverity::SEVERITY_WARNING;
return array(
self::LINT_TODO_COMMENT => $disabled,
self::LINT_UNABLE_TO_PARSE => $warning,
self::LINT_NAMING_CONVENTIONS => $warning,
self::LINT_PREG_QUOTE_MISUSE => $advice,
self::LINT_BRACE_FORMATTING => $warning,
self::LINT_PARENTHESES_SPACING => $warning,
self::LINT_CONTROL_STATEMENT_SPACING => $warning,
self::LINT_BINARY_EXPRESSION_SPACING => $warning,
self::LINT_ARRAY_INDEX_SPACING => $warning,
self::LINT_IMPLICIT_FALLTHROUGH => $warning,
self::LINT_SLOWNESS => $warning,
self::LINT_COMMENT_SPACING => $advice,
self::LINT_CLOSING_CALL_PAREN => $warning,
self::LINT_CLOSING_DECL_PAREN => $warning,
self::LINT_REUSED_ITERATOR_REFERENCE => $warning,
self::LINT_KEYWORD_CASING => $warning,
self::LINT_DOUBLE_QUOTE => $advice,
self::LINT_ELSEIF_USAGE => $advice,
self::LINT_SEMICOLON_SPACING => $advice,
self::LINT_CONCATENATION_OPERATOR => $warning,
// This is disabled by default because it implies a very strict policy
// which isn't necessary in the general case.
self::LINT_RAGGED_CLASSTREE_EDGE => $disabled,
// This is disabled by default because projects don't necessarily target
// a specific minimum version.
self::LINT_PHP_53_FEATURES => $disabled,
self::LINT_PHP_54_FEATURES => $disabled,
);
}
public function getLinterConfigurationOptions() {
return parent::getLinterConfigurationOptions() + array(
'xhpast.naminghook' => array(
'type' => 'optional string',
'help' => pht(
'Name of a concrete subclass of ArcanistXHPASTLintNamingHook which '.
'enforces more granular naming convention rules for symbols.'),
),
'xhpast.switchhook' => array(
'type' => 'optional string',
'help' => pht(
'Name of a concrete subclass of ArcanistXHPASTLintSwitchHook which '.
'tunes the analysis of switch() statements for this linter.'),
),
);
}
public function setLinterConfigurationValue($key, $value) {
switch ($key) {
case 'xhpast.naminghook':
$this->naminghook = $value;
return;
case 'xhpast.switchhook':
$this->switchhook = $value;
return;
}
return parent::setLinterConfigurationValue($key, $value);
}
public function getVersion() {
// The version number should be incremented whenever a new rule is added.
- return '5';
+ return '6';
}
protected function resolveFuture($path, Future $future) {
$tree = $this->getXHPASTTreeForPath($path);
if (!$tree) {
$ex = $this->getXHPASTExceptionForPath($path);
if ($ex instanceof XHPASTSyntaxErrorException) {
$this->raiseLintAtLine(
$ex->getErrorLine(),
1,
self::LINT_PHP_SYNTAX_ERROR,
'This file contains a syntax error: '.$ex->getMessage());
} else if ($ex instanceof Exception) {
$this->raiseLintAtPath(self::LINT_UNABLE_TO_PARSE, $ex->getMessage());
}
return;
}
$root = $tree->getRootNode();
$method_codes = array(
'lintStrstrUsedForCheck' => self::LINT_SLOWNESS,
'lintStrposUsedForStart' => self::LINT_SLOWNESS,
'lintPHP53Features' => self::LINT_PHP_53_FEATURES,
'lintPHP54Features' => self::LINT_PHP_54_FEATURES,
'lintImplicitFallthrough' => self::LINT_IMPLICIT_FALLTHROUGH,
'lintBraceFormatting' => self::LINT_BRACE_FORMATTING,
'lintTautologicalExpressions' => self::LINT_TAUTOLOGICAL_EXPRESSION,
'lintCommentSpaces' => self::LINT_COMMENT_SPACING,
'lintHashComments' => self::LINT_COMMENT_STYLE,
'lintReusedIterators' => self::LINT_REUSED_ITERATORS,
'lintReusedIteratorReferences' => self::LINT_REUSED_ITERATOR_REFERENCE,
'lintVariableVariables' => self::LINT_VARIABLE_VARIABLE,
'lintUndeclaredVariables' => array(
self::LINT_EXTRACT_USE,
self::LINT_REUSED_AS_ITERATOR,
self::LINT_UNDECLARED_VARIABLE,
),
'lintPHPTagUse' => array(
self::LINT_PHP_SHORT_TAG,
self::LINT_PHP_ECHO_TAG,
self::LINT_PHP_OPEN_TAG,
self::LINT_PHP_CLOSE_TAG,
),
'lintNamingConventions' => self::LINT_NAMING_CONVENTIONS,
'lintSurpriseConstructors' => self::LINT_IMPLICIT_CONSTRUCTOR,
'lintParenthesesShouldHugExpressions' => self::LINT_PARENTHESES_SPACING,
'lintSpaceAfterControlStatementKeywords' =>
self::LINT_CONTROL_STATEMENT_SPACING,
'lintSpaceAroundBinaryOperators' => self::LINT_BINARY_EXPRESSION_SPACING,
'lintDynamicDefines' => self::LINT_DYNAMIC_DEFINE,
'lintUseOfThisInStaticMethods' => self::LINT_STATIC_THIS,
'lintPregQuote' => self::LINT_PREG_QUOTE_MISUSE,
'lintExitExpressions' => self::LINT_EXIT_EXPRESSION,
'lintArrayIndexWhitespace' => self::LINT_ARRAY_INDEX_SPACING,
'lintTODOComments' => self::LINT_TODO_COMMENT,
'lintPrimaryDeclarationFilenameMatch' =>
self::LINT_CLASS_FILENAME_MISMATCH,
'lintPlusOperatorOnStrings' => self::LINT_PLUS_OPERATOR_ON_STRINGS,
'lintDuplicateKeysInArray' => self::LINT_DUPLICATE_KEYS_IN_ARRAY,
'lintRaggedClasstreeEdges' => self::LINT_RAGGED_CLASSTREE_EDGE,
'lintClosingCallParen' => self::LINT_CLOSING_CALL_PAREN,
'lintClosingDeclarationParen' => self::LINT_CLOSING_DECL_PAREN,
'lintKeywordCasing' => self::LINT_KEYWORD_CASING,
'lintStrings' => self::LINT_DOUBLE_QUOTE,
'lintElseIfStatements' => self::LINT_ELSEIF_USAGE,
'lintSemicolons' => self::LINT_SEMICOLON_SPACING,
'lintSpaceAroundConcatenationOperators' =>
self::LINT_CONCATENATION_OPERATOR,
);
foreach ($method_codes as $method => $codes) {
foreach ((array)$codes as $code) {
if ($this->isCodeEnabled($code)) {
call_user_func(array($this, $method), $root);
break;
}
}
}
}
public function lintStrstrUsedForCheck(XHPASTNode $root) {
$expressions = $root->selectDescendantsOfType('n_BINARY_EXPRESSION');
foreach ($expressions as $expression) {
$operator = $expression->getChildOfType(1, 'n_OPERATOR');
$operator = $operator->getConcreteString();
if ($operator != '===' && $operator != '!==') {
continue;
}
$false = $expression->getChildByIndex(0);
if ($false->getTypeName() == 'n_SYMBOL_NAME' &&
$false->getConcreteString() == 'false') {
$strstr = $expression->getChildByIndex(2);
} else {
$strstr = $false;
$false = $expression->getChildByIndex(2);
if ($false->getTypeName() != 'n_SYMBOL_NAME' ||
$false->getConcreteString() != 'false') {
continue;
}
}
if ($strstr->getTypeName() != 'n_FUNCTION_CALL') {
continue;
}
$name = strtolower($strstr->getChildByIndex(0)->getConcreteString());
if ($name == 'strstr' || $name == 'strchr') {
$this->raiseLintAtNode(
$strstr,
self::LINT_SLOWNESS,
'Use strpos() for checking if the string contains something.');
} else if ($name == 'stristr') {
$this->raiseLintAtNode(
$strstr,
self::LINT_SLOWNESS,
'Use stripos() for checking if the string contains something.');
}
}
}
public function lintStrposUsedForStart(XHPASTNode $root) {
$expressions = $root->selectDescendantsOfType('n_BINARY_EXPRESSION');
foreach ($expressions as $expression) {
$operator = $expression->getChildOfType(1, 'n_OPERATOR');
$operator = $operator->getConcreteString();
if ($operator != '===' && $operator != '!==') {
continue;
}
$zero = $expression->getChildByIndex(0);
if ($zero->getTypeName() == 'n_NUMERIC_SCALAR' &&
$zero->getConcreteString() == '0') {
$strpos = $expression->getChildByIndex(2);
} else {
$strpos = $zero;
$zero = $expression->getChildByIndex(2);
if ($zero->getTypeName() != 'n_NUMERIC_SCALAR' ||
$zero->getConcreteString() != '0') {
continue;
}
}
if ($strpos->getTypeName() != 'n_FUNCTION_CALL') {
continue;
}
$name = strtolower($strpos->getChildByIndex(0)->getConcreteString());
if ($name == 'strpos') {
$this->raiseLintAtNode(
$strpos,
self::LINT_SLOWNESS,
'Use strncmp() for checking if the string starts with something.');
} else if ($name == 'stripos') {
$this->raiseLintAtNode(
$strpos,
self::LINT_SLOWNESS,
'Use strncasecmp() for checking if the string starts with '.
'something.');
}
}
}
public function lintPHP53Features(XHPASTNode $root) {
$functions = $root->selectTokensOfType('T_FUNCTION');
foreach ($functions as $function) {
$next = $function->getNextToken();
while ($next) {
if ($next->isSemantic()) {
break;
}
$next = $next->getNextToken();
}
if ($next) {
if ($next->getTypeName() == '(') {
$this->raiseLintAtToken(
$function,
self::LINT_PHP_53_FEATURES,
'This codebase targets PHP 5.2, but anonymous functions were '.
'not introduced until PHP 5.3.');
}
}
}
$namespaces = $root->selectTokensOfType('T_NAMESPACE');
foreach ($namespaces as $namespace) {
$this->raiseLintAtToken(
$namespace,
self::LINT_PHP_53_FEATURES,
'This codebase targets PHP 5.2, but namespaces were not introduced '.
'until PHP 5.3.');
}
// NOTE: This is only "use x;", in anonymous functions the node type is
// n_LEXICAL_VARIABLE_LIST even though both tokens are T_USE.
// TODO: We parse n_USE in a slightly crazy way right now; that would be
// a better selector once it's fixed.
$uses = $root->selectDescendantsOfType('n_USE_LIST');
foreach ($uses as $use) {
$this->raiseLintAtNode(
$use,
self::LINT_PHP_53_FEATURES,
'This codebase targets PHP 5.2, but namespaces were not introduced '.
'until PHP 5.3.');
}
$statics = $root->selectDescendantsOfType('n_CLASS_STATIC_ACCESS');
foreach ($statics as $static) {
$name = $static->getChildByIndex(0);
if ($name->getTypeName() != 'n_CLASS_NAME') {
continue;
}
if ($name->getConcreteString() == 'static') {
$this->raiseLintAtNode(
$name,
self::LINT_PHP_53_FEATURES,
'This codebase targets PHP 5.2, but `static::` was not introduced '.
'until PHP 5.3.');
}
}
$ternaries = $root->selectDescendantsOfType('n_TERNARY_EXPRESSION');
foreach ($ternaries as $ternary) {
$yes = $ternary->getChildByIndex(1);
if ($yes->getTypeName() == 'n_EMPTY') {
$this->raiseLintAtNode(
$ternary,
self::LINT_PHP_53_FEATURES,
'This codebase targets PHP 5.2, but short ternary was not '.
'introduced until PHP 5.3.');
}
}
$heredocs = $root->selectDescendantsOfType('n_HEREDOC');
foreach ($heredocs as $heredoc) {
if (preg_match('/^<<<[\'"]/', $heredoc->getConcreteString())) {
$this->raiseLintAtNode(
$heredoc,
self::LINT_PHP_53_FEATURES,
'This codebase targets PHP 5.2, but nowdoc was not introduced until '.
'PHP 5.3.');
}
}
$this->lintPHP53Functions($root);
}
private function lintPHP53Functions(XHPASTNode $root) {
$target = phutil_get_library_root('arcanist').
'/../resources/php_compat_info.json';
$compat_info = json_decode(file_get_contents($target), true);
$required = '5.2.3';
$calls = $root->selectDescendantsOfType('n_FUNCTION_CALL');
foreach ($calls as $call) {
$node = $call->getChildByIndex(0);
$name = $node->getConcreteString();
$version = idx($compat_info['functions'], $name);
$windows = idx($compat_info['functions_windows'], $name);
if ($version && version_compare($version['min'], $required, '>')) {
$this->raiseLintAtNode(
$node,
self::LINT_PHP_53_FEATURES,
"This codebase targets PHP 5.2.3, but `{$name}()` was not ".
"introduced until PHP {$version['min']}.");
} else if (array_key_exists($name, $compat_info['params'])) {
$params = $call->getChildOfType(1, 'n_CALL_PARAMETER_LIST');
foreach (array_values($params->getChildren()) as $i => $param) {
$version = idx($compat_info['params'][$name], $i);
if ($version && version_compare($version, $required, '>')) {
$this->raiseLintAtNode(
$param,
self::LINT_PHP_53_FEATURES,
"This codebase targets PHP 5.2.3, but parameter ".($i + 1)." ".
"of `{$name}()` was not introduced until PHP {$version}.");
}
}
} else if ($windows === '' || version_compare($windows, '5.3.0') > 0) {
$this->raiseLintAtNode(
$node,
self::LINT_PHP_53_FEATURES,
"This codebase targets PHP 5.3.0 on Windows, but `{$name}()` is not ".
"available there".
($windows ? " until PHP {$windows}" : '').".");
}
}
$classes = $root->selectDescendantsOfType('n_CLASS_NAME');
foreach ($classes as $node) {
$name = $node->getConcreteString();
$version = idx($compat_info['interfaces'], $name);
$version = idx($compat_info['classes'], $name, $version);
if ($version && version_compare($version['min'], $required, '>')) {
$this->raiseLintAtNode(
$node,
self::LINT_PHP_53_FEATURES,
"This codebase targets PHP 5.2.3, but `{$name}` was not ".
"introduced until PHP {$version['min']}.");
}
}
+ // TODO: Technically, this will include function names. This is unlikely to
+ // cause any issues (unless, of course, there existed a function that had
+ // the same name as some constant).
+ $constants = $root->selectDescendantsOfType('n_SYMBOL_NAME');
+ foreach ($constants as $node) {
+ $name = $node->getConcreteString();
+ $version = idx($compat_info['constants'], $name);
+ if ($version && version_compare($version['min'], $required, '>')) {
+ $this->raiseLintAtNode(
+ $node,
+ self::LINT_PHP_53_FEATURES,
+ "This codebase targets PHP 5.2.3, but `{$name}` was not ".
+ "introduced until PHP {$version['min']}.");
+ }
+ }
}
public function lintPHP54Features(XHPASTNode $root) {
$indexes = $root->selectDescendantsOfType('n_INDEX_ACCESS');
foreach ($indexes as $index) {
$left = $index->getChildByIndex(0);
switch ($left->getTypeName()) {
case 'n_FUNCTION_CALL':
case 'n_METHOD_CALL':
$this->raiseLintAtNode(
$index->getChildByIndex(1),
self::LINT_PHP_54_FEATURES,
'The f()[...] syntax was not introduced until PHP 5.4, but this '.
'codebase targets an earlier version of PHP. You can rewrite '.
'this expression using idx().');
break;
}
}
}
private function lintImplicitFallthrough(XHPASTNode $root) {
$hook_obj = null;
$working_copy = $this->getEngine()->getWorkingCopy();
if ($working_copy) {
$hook_class = $this->switchhook
? $this->switchhook
: $this->getDeprecatedConfiguration('lint.xhpast.switchhook');
if ($hook_class) {
$hook_obj = newv($hook_class, array());
assert_instances_of(array($hook_obj), 'ArcanistXHPASTLintSwitchHook');
}
}
$switches = $root->selectDescendantsOfType('n_SWITCH');
foreach ($switches as $switch) {
$blocks = array();
$cases = $switch->selectDescendantsOfType('n_CASE');
foreach ($cases as $case) {
$blocks[] = $case;
}
$defaults = $switch->selectDescendantsOfType('n_DEFAULT');
foreach ($defaults as $default) {
$blocks[] = $default;
}
foreach ($blocks as $key => $block) {
// Collect all the tokens in this block which aren't at top level.
// We want to ignore "break", and "continue" in these blocks.
$lower_level = $block->selectDescendantsOfType('n_WHILE');
$lower_level->add($block->selectDescendantsOfType('n_DO_WHILE'));
$lower_level->add($block->selectDescendantsOfType('n_FOR'));
$lower_level->add($block->selectDescendantsOfType('n_FOREACH'));
$lower_level->add($block->selectDescendantsOfType('n_SWITCH'));
$lower_level_tokens = array();
foreach ($lower_level as $lower_level_block) {
$lower_level_tokens += $lower_level_block->getTokens();
}
// Collect all the tokens in this block which aren't in this scope
// (because they're inside class, function or interface declarations).
// We want to ignore all of these tokens.
$decls = $block->selectDescendantsOfType('n_FUNCTION_DECLARATION');
$decls->add($block->selectDescendantsOfType('n_CLASS_DECLARATION'));
// For completeness; these can't actually have anything.
$decls->add($block->selectDescendantsOfType('n_INTERFACE_DECLARATION'));
$different_scope_tokens = array();
foreach ($decls as $decl) {
$different_scope_tokens += $decl->getTokens();
}
$lower_level_tokens += $different_scope_tokens;
// Get all the trailing nonsemantic tokens, since we need to look for
// "fallthrough" comments past the end of the semantic block.
$tokens = $block->getTokens();
$last = end($tokens);
while ($last && $last = $last->getNextToken()) {
if ($last->isSemantic()) {
break;
}
$tokens[$last->getTokenID()] = $last;
}
$blocks[$key] = array(
$tokens,
$lower_level_tokens,
$different_scope_tokens,
);
}
foreach ($blocks as $token_lists) {
list(
$tokens,
$lower_level_tokens,
$different_scope_tokens) = $token_lists;
// Test each block (case or default statement) to see if it's OK. It's
// OK if:
//
// - it is empty; or
// - it ends in break, return, throw, continue or exit at top level; or
// - it has a comment with "fallthrough" in its text.
// Empty blocks are OK, so we start this at `true` and only set it to
// false if we find a statement.
$block_ok = true;
// Keeps track of whether the current statement is one that validates
// the block (break, return, throw, continue) or something else.
$statement_ok = false;
foreach ($tokens as $token_id => $token) {
if (!$token->isSemantic()) {
// Liberally match "fall" in the comment text so that comments like
// "fallthru", "fall through", "fallthrough", etc., are accepted.
if (preg_match('/fall/i', $token->getValue())) {
$block_ok = true;
break;
}
continue;
}
$tok_type = $token->getTypeName();
if ($tok_type == 'T_FUNCTION' ||
$tok_type == 'T_CLASS' ||
$tok_type == 'T_INTERFACE') {
// These aren't statements, but mark the block as nonempty anyway.
$block_ok = false;
continue;
}
if ($tok_type == ';') {
if ($statement_ok) {
$statment_ok = false;
} else {
$block_ok = false;
}
continue;
}
if ($tok_type == 'T_BREAK' ||
$tok_type == 'T_CONTINUE') {
if (empty($lower_level_tokens[$token_id])) {
$statement_ok = true;
$block_ok = true;
}
continue;
}
if ($tok_type == 'T_RETURN' ||
$tok_type == 'T_THROW' ||
$tok_type == 'T_EXIT' ||
($hook_obj && $hook_obj->checkSwitchToken($token))) {
if (empty($different_scope_tokens[$token_id])) {
$statement_ok = true;
$block_ok = true;
}
continue;
}
}
if (!$block_ok) {
$this->raiseLintAtToken(
head($tokens),
self::LINT_IMPLICIT_FALLTHROUGH,
"This 'case' or 'default' has a nonempty block which does not ".
"end with 'break', 'continue', 'return', 'throw' or 'exit'. Did ".
"you forget to add one of those? If you intend to fall through, ".
"add a '// fallthrough' comment to silence this warning.");
}
}
}
}
private function lintBraceFormatting(XHPASTNode $root) {
foreach ($root->selectDescendantsOfType('n_STATEMENT_LIST') as $list) {
$tokens = $list->getTokens();
if (!$tokens || head($tokens)->getValue() != '{') {
continue;
}
list($before, $after) = $list->getSurroundingNonsemanticTokens();
if (!$before) {
$first = head($tokens);
// Only insert the space if we're after a closing parenthesis. If
// we're in a construct like "else{}", other rules will insert space
// after the 'else' correctly.
$prev = $first->getPrevToken();
if (!$prev || $prev->getValue() != ')') {
continue;
}
$this->raiseLintAtToken(
$first,
self::LINT_BRACE_FORMATTING,
'Put opening braces on the same line as control statements and '.
'declarations, with a single space before them.',
' '.$first->getValue());
} else if (count($before) == 1) {
$before = reset($before);
if ($before->getValue() != ' ') {
$this->raiseLintAtToken(
$before,
self::LINT_BRACE_FORMATTING,
'Put opening braces on the same line as control statements and '.
'declarations, with a single space before them.',
' ');
}
}
}
}
private function lintTautologicalExpressions(XHPASTNode $root) {
$expressions = $root->selectDescendantsOfType('n_BINARY_EXPRESSION');
static $operators = array(
'-' => true,
'/' => true,
'-=' => true,
'/=' => true,
'<=' => true,
'<' => true,
'==' => true,
'===' => true,
'!=' => true,
'!==' => true,
'>=' => true,
'>' => true,
);
static $logical = array(
'||' => true,
'&&' => true,
);
foreach ($expressions as $expr) {
$operator = $expr->getChildByIndex(1)->getConcreteString();
if (!empty($operators[$operator])) {
$left = $expr->getChildByIndex(0)->getSemanticString();
$right = $expr->getChildByIndex(2)->getSemanticString();
if ($left == $right) {
$this->raiseLintAtNode(
$expr,
self::LINT_TAUTOLOGICAL_EXPRESSION,
'Both sides of this expression are identical, so it always '.
'evaluates to a constant.');
}
}
if (!empty($logical[$operator])) {
$left = $expr->getChildByIndex(0)->getSemanticString();
$right = $expr->getChildByIndex(2)->getSemanticString();
// NOTE: These will be null to indicate "could not evaluate".
$left = $this->evaluateStaticBoolean($left);
$right = $this->evaluateStaticBoolean($right);
if (($operator == '||' && ($left === true || $right === true)) ||
($operator == '&&' && ($left === false || $right === false))) {
$this->raiseLintAtNode(
$expr,
self::LINT_TAUTOLOGICAL_EXPRESSION,
'The logical value of this expression is static. Did you forget '.
'to remove some debugging code?');
}
}
}
}
/**
* Statically evaluate a boolean value from an XHP tree.
*
* TODO: Improve this and move it to XHPAST proper?
*
* @param string The "semantic string" of a single value.
* @return mixed ##true## or ##false## if the value could be evaluated
* statically; ##null## if static evaluation was not possible.
*/
private function evaluateStaticBoolean($string) {
switch (strtolower($string)) {
case '0':
case 'null':
case 'false':
return false;
case '1':
case 'true':
return true;
}
return null;
}
protected function lintCommentSpaces(XHPASTNode $root) {
foreach ($root->selectTokensOfType('T_COMMENT') as $comment) {
$value = $comment->getValue();
if ($value[0] != '#') {
$match = null;
if (preg_match('@^(/[/*]+)[^/*\s]@', $value, $match)) {
$this->raiseLintAtOffset(
$comment->getOffset(),
self::LINT_COMMENT_SPACING,
'Put space after comment start.',
$match[1],
$match[1].' ');
}
}
}
}
protected function lintHashComments(XHPASTNode $root) {
foreach ($root->selectTokensOfType('T_COMMENT') as $comment) {
$value = $comment->getValue();
if ($value[0] != '#') {
continue;
}
$this->raiseLintAtOffset(
$comment->getOffset(),
self::LINT_COMMENT_STYLE,
'Use "//" single-line comments, not "#".',
'#',
(preg_match('/^#\S/', $value) ? '// ' : '//'));
}
}
/**
* Find cases where loops get nested inside each other but use the same
* iterator variable. For example:
*
* COUNTEREXAMPLE
* foreach ($list as $thing) {
* foreach ($stuff as $thing) { // <-- Raises an error for reuse of $thing
* // ...
* }
* }
*
*/
private function lintReusedIterators(XHPASTNode $root) {
$used_vars = array();
$for_loops = $root->selectDescendantsOfType('n_FOR');
foreach ($for_loops as $for_loop) {
$var_map = array();
// Find all the variables that are assigned to in the for() expression.
$for_expr = $for_loop->getChildOfType(0, 'n_FOR_EXPRESSION');
$bin_exprs = $for_expr->selectDescendantsOfType('n_BINARY_EXPRESSION');
foreach ($bin_exprs as $bin_expr) {
if ($bin_expr->getChildByIndex(1)->getConcreteString() == '=') {
$var = $bin_expr->getChildByIndex(0);
$var_map[$var->getConcreteString()] = $var;
}
}
$used_vars[$for_loop->getID()] = $var_map;
}
$foreach_loops = $root->selectDescendantsOfType('n_FOREACH');
foreach ($foreach_loops as $foreach_loop) {
$var_map = array();
$foreach_expr = $foreach_loop->getChildOftype(0, 'n_FOREACH_EXPRESSION');
// We might use one or two vars, i.e. "foreach ($x as $y => $z)" or
// "foreach ($x as $y)".
$possible_used_vars = array(
$foreach_expr->getChildByIndex(1),
$foreach_expr->getChildByIndex(2),
);
foreach ($possible_used_vars as $var) {
if ($var->getTypeName() == 'n_EMPTY') {
continue;
}
$name = $var->getConcreteString();
$name = trim($name, '&'); // Get rid of ref silliness.
$var_map[$name] = $var;
}
$used_vars[$foreach_loop->getID()] = $var_map;
}
$all_loops = $for_loops->add($foreach_loops);
foreach ($all_loops as $loop) {
$child_for_loops = $loop->selectDescendantsOfType('n_FOR');
$child_foreach_loops = $loop->selectDescendantsOfType('n_FOREACH');
$child_loops = $child_for_loops->add($child_foreach_loops);
$outer_vars = $used_vars[$loop->getID()];
foreach ($child_loops as $inner_loop) {
$inner_vars = $used_vars[$inner_loop->getID()];
$shared = array_intersect_key($outer_vars, $inner_vars);
if ($shared) {
$shared_desc = implode(', ', array_keys($shared));
$message = $this->raiseLintAtNode(
$inner_loop->getChildByIndex(0),
self::LINT_REUSED_ITERATORS,
"This loop reuses iterator variables ({$shared_desc}) from an ".
"outer loop. You might be clobbering the outer iterator. Change ".
"the inner loop to use a different iterator name.");
$locations = array();
foreach ($shared as $var) {
$locations[] = $this->getOtherLocation($var->getOffset());
}
$message->setOtherLocations($locations);
}
}
}
}
/**
* Find cases where a foreach loop is being iterated using a variable
* reference and the same variable is used outside of the loop without
* calling unset() or reassigning the variable to another variable
* reference.
*
* COUNTEREXAMPLE
* foreach ($ar as &$a) {
* // ...
* }
* $a = 1; // <-- Raises an error for using $a
*
*/
protected function lintReusedIteratorReferences(XHPASTNode $root) {
$fdefs = $root->selectDescendantsOfType('n_FUNCTION_DECLARATION');
$mdefs = $root->selectDescendantsOfType('n_METHOD_DECLARATION');
$defs = $fdefs->add($mdefs);
foreach ($defs as $def) {
$body = $def->getChildByIndex(5);
if ($body->getTypeName() == 'n_EMPTY') {
// Abstract method declaration.
continue;
}
$exclude = array();
// Exclude uses of variables, unsets, and foreach loops
// within closures - they are checked on their own
$func_defs = $body->selectDescendantsOfType('n_FUNCTION_DECLARATION');
foreach ($func_defs as $func_def) {
$vars = $func_def->selectDescendantsOfType('n_VARIABLE');
foreach ($vars as $var) {
$exclude[$var->getID()] = true;
}
$unset_lists = $func_def->selectDescendantsOfType('n_UNSET_LIST');
foreach ($unset_lists as $unset_list) {
$exclude[$unset_list->getID()] = true;
}
$foreaches = $func_def->selectDescendantsOfType('n_FOREACH');
foreach ($foreaches as $foreach) {
$exclude[$foreach->getID()] = true;
}
}
// Find all variables that are unset within the scope
$unset_vars = array();
$unset_lists = $body->selectDescendantsOfType('n_UNSET_LIST');
foreach ($unset_lists as $unset_list) {
if (isset($exclude[$unset_list->getID()])) {
continue;
}
$unset_list_vars = $unset_list->selectDescendantsOfType('n_VARIABLE');
foreach ($unset_list_vars as $var) {
$concrete = $this->getConcreteVariableString($var);
$unset_vars[$concrete][] = $var->getOffset();
$exclude[$var->getID()] = true;
}
}
// Find all reference variables in foreach expressions
$reference_vars = array();
$foreaches = $body->selectDescendantsOfType('n_FOREACH');
foreach ($foreaches as $foreach) {
if (isset($exclude[$foreach->getID()])) {
continue;
}
$foreach_expr = $foreach->getChildOfType(0, 'n_FOREACH_EXPRESSION');
$var = $foreach_expr->getChildByIndex(2);
if ($var->getTypeName() != 'n_VARIABLE_REFERENCE') {
continue;
}
$reference = $var->getChildByIndex(0);
if ($reference->getTypeName() != 'n_VARIABLE') {
continue;
}
$reference_name = $this->getConcreteVariableString($reference);
$reference_vars[$reference_name][] = $reference->getOffset();
$exclude[$reference->getID()] = true;
// Exclude uses of the reference variable within the foreach loop
$foreach_vars = $foreach->selectDescendantsOfType('n_VARIABLE');
foreach ($foreach_vars as $var) {
$name = $this->getConcreteVariableString($var);
if ($name == $reference_name) {
$exclude[$var->getID()] = true;
}
}
}
// Allow usage if the reference variable is assigned to another
// reference variable
$binary = $body->selectDescendantsOfType('n_BINARY_EXPRESSION');
foreach ($binary as $expr) {
if ($expr->getChildByIndex(1)->getConcreteString() != '=') {
continue;
}
$lval = $expr->getChildByIndex(0);
if ($lval->getTypeName() != 'n_VARIABLE') {
continue;
}
$rval = $expr->getChildByIndex(2);
if ($rval->getTypeName() != 'n_VARIABLE_REFERENCE') {
continue;
}
// Counts as unsetting a variable
$concrete = $this->getConcreteVariableString($lval);
$unset_vars[$concrete][] = $lval->getOffset();
$exclude[$lval->getID()] = true;
}
$all_vars = array();
$all = $body->selectDescendantsOfType('n_VARIABLE');
foreach ($all as $var) {
if (isset($exclude[$var->getID()])) {
continue;
}
$name = $this->getConcreteVariableString($var);
if (!isset($reference_vars[$name])) {
continue;
}
// Find the closest reference offset to this variable
$reference_offset = null;
foreach ($reference_vars[$name] as $offset) {
if ($offset < $var->getOffset()) {
$reference_offset = $offset;
} else {
break;
}
}
if (!$reference_offset) {
continue;
}
// Check if an unset exists between reference and usage of this
// variable
$warn = true;
if (isset($unset_vars[$name])) {
foreach ($unset_vars[$name] as $unset_offset) {
if ($unset_offset > $reference_offset &&
$unset_offset < $var->getOffset()) {
$warn = false;
break;
}
}
}
if ($warn) {
$this->raiseLintAtNode(
$var,
self::LINT_REUSED_ITERATOR_REFERENCE,
'This variable was used already as a by-reference iterator '.
'variable. Such variables survive outside the foreach loop, '.
'do not reuse.');
}
}
}
}
protected function lintVariableVariables(XHPASTNode $root) {
$vvars = $root->selectDescendantsOfType('n_VARIABLE_VARIABLE');
foreach ($vvars as $vvar) {
$this->raiseLintAtNode(
$vvar,
self::LINT_VARIABLE_VARIABLE,
'Rewrite this code to use an array. Variable variables are unclear '.
'and hinder static analysis.');
}
}
protected function lintUndeclaredVariables(XHPASTNode $root) {
// These things declare variables in a function:
// Explicit parameters
// Assignment
// Assignment via list()
// Static
// Global
// Lexical vars
// Builtins ($this)
// foreach()
// catch
//
// These things make lexical scope unknowable:
// Use of extract()
// Assignment to variable variables ($$x)
// Global with variable variables
//
// These things don't count as "using" a variable:
// isset()
// empty()
// Static class variables
//
// The general approach here is to find each function/method declaration,
// then:
//
// 1. Identify all the variable declarations, and where they first occur
// in the function/method declaration.
// 2. Identify all the uses that don't really count (as above).
// 3. Everything else must be a use of a variable.
// 4. For each variable, check if any uses occur before the declaration
// and warn about them.
//
// We also keep track of where lexical scope becomes unknowable (e.g.,
// because the function calls extract() or uses dynamic variables,
// preventing us from keeping track of which variables are defined) so we
// can stop issuing warnings after that.
//
// TODO: Support functions defined inside other functions which is commonly
// used with anonymous functions.
$fdefs = $root->selectDescendantsOfType('n_FUNCTION_DECLARATION');
$mdefs = $root->selectDescendantsOfType('n_METHOD_DECLARATION');
$defs = $fdefs->add($mdefs);
foreach ($defs as $def) {
// We keep track of the first offset where scope becomes unknowable, and
// silence any warnings after that. Default it to INT_MAX so we can min()
// it later to keep track of the first problem we encounter.
$scope_destroyed_at = PHP_INT_MAX;
$declarations = array(
'$this' => 0,
) + array_fill_keys($this->getSuperGlobalNames(), 0);
$declaration_tokens = array();
$exclude_tokens = array();
$vars = array();
// First up, find all the different kinds of declarations, as explained
// above. Put the tokens into the $vars array.
$param_list = $def->getChildOfType(3, 'n_DECLARATION_PARAMETER_LIST');
$param_vars = $param_list->selectDescendantsOfType('n_VARIABLE');
foreach ($param_vars as $var) {
$vars[] = $var;
}
// This is PHP5.3 closure syntax: function () use ($x) {};
$lexical_vars = $def
->getChildByIndex(4)
->selectDescendantsOfType('n_VARIABLE');
foreach ($lexical_vars as $var) {
$vars[] = $var;
}
$body = $def->getChildByIndex(5);
if ($body->getTypeName() == 'n_EMPTY') {
// Abstract method declaration.
continue;
}
$static_vars = $body
->selectDescendantsOfType('n_STATIC_DECLARATION')
->selectDescendantsOfType('n_VARIABLE');
foreach ($static_vars as $var) {
$vars[] = $var;
}
$global_vars = $body
->selectDescendantsOfType('n_GLOBAL_DECLARATION_LIST');
foreach ($global_vars as $var_list) {
foreach ($var_list->getChildren() as $var) {
if ($var->getTypeName() == 'n_VARIABLE') {
$vars[] = $var;
} else {
// Dynamic global variable, i.e. "global $$x;".
$scope_destroyed_at = min($scope_destroyed_at, $var->getOffset());
// An error is raised elsewhere, no need to raise here.
}
}
}
// Include "catch (Exception $ex)", but not variables in the body of the
// catch block.
$catches = $body->selectDescendantsOfType('n_CATCH');
foreach ($catches as $catch) {
$vars[] = $catch->getChildOfType(1, 'n_VARIABLE');
}
$binary = $body->selectDescendantsOfType('n_BINARY_EXPRESSION');
foreach ($binary as $expr) {
if ($expr->getChildByIndex(1)->getConcreteString() != '=') {
continue;
}
$lval = $expr->getChildByIndex(0);
if ($lval->getTypeName() == 'n_VARIABLE') {
$vars[] = $lval;
} else if ($lval->getTypeName() == 'n_LIST') {
// Recursivey grab everything out of list(), since the grammar
// permits list() to be nested. Also note that list() is ONLY valid
// as an lval assignments, so we could safely lift this out of the
// n_BINARY_EXPRESSION branch.
$assign_vars = $lval->selectDescendantsOfType('n_VARIABLE');
foreach ($assign_vars as $var) {
$vars[] = $var;
}
}
if ($lval->getTypeName() == 'n_VARIABLE_VARIABLE') {
$scope_destroyed_at = min($scope_destroyed_at, $lval->getOffset());
// No need to raise here since we raise an error elsewhere.
}
}
$calls = $body->selectDescendantsOfType('n_FUNCTION_CALL');
foreach ($calls as $call) {
$name = strtolower($call->getChildByIndex(0)->getConcreteString());
if ($name == 'empty' || $name == 'isset') {
$params = $call
->getChildOfType(1, 'n_CALL_PARAMETER_LIST')
->selectDescendantsOfType('n_VARIABLE');
foreach ($params as $var) {
$exclude_tokens[$var->getID()] = true;
}
continue;
}
if ($name != 'extract') {
continue;
}
$scope_destroyed_at = min($scope_destroyed_at, $call->getOffset());
$this->raiseLintAtNode(
$call,
self::LINT_EXTRACT_USE,
'Avoid extract(). It is confusing and hinders static analysis.');
}
// Now we have every declaration except foreach(), handled below. Build
// two maps, one which just keeps track of which tokens are part of
// declarations ($declaration_tokens) and one which has the first offset
// where a variable is declared ($declarations).
foreach ($vars as $var) {
$concrete = $this->getConcreteVariableString($var);
$declarations[$concrete] = min(
idx($declarations, $concrete, PHP_INT_MAX),
$var->getOffset());
$declaration_tokens[$var->getID()] = true;
}
// Excluded tokens are ones we don't "count" as being used, described
// above. Put them into $exclude_tokens.
$class_statics = $body
->selectDescendantsOfType('n_CLASS_STATIC_ACCESS');
$class_static_vars = $class_statics
->selectDescendantsOfType('n_VARIABLE');
foreach ($class_static_vars as $var) {
$exclude_tokens[$var->getID()] = true;
}
// Find all the variables in scope, and figure out where they are used.
// We want to find foreach() iterators which are both declared before and
// used after the foreach() loop.
$uses = array();
$all_vars = $body->selectDescendantsOfType('n_VARIABLE');
$all = array();
// NOTE: $all_vars is not a real array so we can't unset() it.
foreach ($all_vars as $var) {
// Be strict since it's easier; we don't let you reuse an iterator you
// declared before a loop after the loop, even if you're just assigning
// to it.
$concrete = $this->getConcreteVariableString($var);
$uses[$concrete][$var->getID()] = $var->getOffset();
if (isset($declaration_tokens[$var->getID()])) {
// We know this is part of a declaration, so it's fine.
continue;
}
if (isset($exclude_tokens[$var->getID()])) {
// We know this is part of isset() or similar, so it's fine.
continue;
}
$all[$var->getOffset()] = $concrete;
}
// Do foreach() last, we want to handle implicit redeclaration of a
// variable already in scope since this probably means we're ovewriting a
// local.
// NOTE: Processing foreach expressions in order allows programs which
// reuse iterator variables in other foreach() loops -- this is fine. We
// have a separate warning to prevent nested loops from reusing the same
// iterators.
$foreaches = $body->selectDescendantsOfType('n_FOREACH');
$all_foreach_vars = array();
foreach ($foreaches as $foreach) {
$foreach_expr = $foreach->getChildOfType(0, 'n_FOREACH_EXPRESSION');
$foreach_vars = array();
// Determine the end of the foreach() loop.
$foreach_tokens = $foreach->getTokens();
$last_token = end($foreach_tokens);
$foreach_end = $last_token->getOffset();
$key_var = $foreach_expr->getChildByIndex(1);
if ($key_var->getTypeName() == 'n_VARIABLE') {
$foreach_vars[] = $key_var;
}
$value_var = $foreach_expr->getChildByIndex(2);
if ($value_var->getTypeName() == 'n_VARIABLE') {
$foreach_vars[] = $value_var;
} else {
// The root-level token may be a reference, as in:
// foreach ($a as $b => &$c) { ... }
// Reach into the n_VARIABLE_REFERENCE node to grab the n_VARIABLE
// node.
$var = $value_var->getChildByIndex(0);
if ($var->getTypeName() == 'n_VARIABLE_VARIABLE') {
$var = $var->getChildByIndex(0);
}
$foreach_vars[] = $var;
}
// Remove all uses of the iterators inside of the foreach() loop from
// the $uses map.
foreach ($foreach_vars as $var) {
$concrete = $this->getConcreteVariableString($var);
$offset = $var->getOffset();
foreach ($uses[$concrete] as $id => $use_offset) {
if (($use_offset >= $offset) && ($use_offset < $foreach_end)) {
unset($uses[$concrete][$id]);
}
}
$all_foreach_vars[] = $var;
}
}
foreach ($all_foreach_vars as $var) {
$concrete = $this->getConcreteVariableString($var);
$offset = $var->getOffset();
// If a variable was declared before a foreach() and is used after
// it, raise a message.
if (isset($declarations[$concrete])) {
if ($declarations[$concrete] < $offset) {
if (!empty($uses[$concrete]) &&
max($uses[$concrete]) > $offset) {
$message = $this->raiseLintAtNode(
$var,
self::LINT_REUSED_AS_ITERATOR,
'This iterator variable is a previously declared local '.
'variable. To avoid overwriting locals, do not reuse them '.
'as iterator variables.');
$message->setOtherLocations(array(
$this->getOtherLocation($declarations[$concrete]),
$this->getOtherLocation(max($uses[$concrete])),
));
}
}
}
// This is a declaration, exclude it from the "declare variables prior
// to use" check below.
unset($all[$var->getOffset()]);
$vars[] = $var;
}
// Now rebuild declarations to include foreach().
foreach ($vars as $var) {
$concrete = $this->getConcreteVariableString($var);
$declarations[$concrete] = min(
idx($declarations, $concrete, PHP_INT_MAX),
$var->getOffset());
$declaration_tokens[$var->getID()] = true;
}
foreach (array('n_STRING_SCALAR', 'n_HEREDOC') as $type) {
foreach ($body->selectDescendantsOfType($type) as $string) {
foreach ($string->getStringVariables() as $offset => $var) {
$all[$string->getOffset() + $offset - 1] = '$'.$var;
}
}
}
// Issue a warning for every variable token, unless it appears in a
// declaration, we know about a prior declaration, we have explicitly
// exlcuded it, or scope has been made unknowable before it appears.
$issued_warnings = array();
foreach ($all as $offset => $concrete) {
if ($offset >= $scope_destroyed_at) {
// This appears after an extract() or $$var so we have no idea
// whether it's legitimate or not. We raised a harshly-worded warning
// when scope was made unknowable, so just ignore anything we can't
// figure out.
continue;
}
if ($offset >= idx($declarations, $concrete, PHP_INT_MAX)) {
// The use appears after the variable is declared, so it's fine.
continue;
}
if (!empty($issued_warnings[$concrete])) {
// We've already issued a warning for this variable so we don't need
// to issue another one.
continue;
}
$this->raiseLintAtOffset(
$offset,
self::LINT_UNDECLARED_VARIABLE,
'Declare variables prior to use (even if you are passing them '.
'as reference parameters). You may have misspelled this '.
'variable name.',
$concrete);
$issued_warnings[$concrete] = true;
}
}
}
private function getConcreteVariableString(XHPASTNode $var) {
$concrete = $var->getConcreteString();
// Strip off curly braces as in $obj->{$property}.
$concrete = trim($concrete, '{}');
return $concrete;
}
protected function lintPHPTagUse(XHPASTNode $root) {
$tokens = $root->getTokens();
foreach ($tokens as $token) {
if ($token->getTypeName() == 'T_OPEN_TAG') {
if (trim($token->getValue()) == '<?') {
$this->raiseLintAtToken(
$token,
self::LINT_PHP_SHORT_TAG,
'Use the full form of the PHP open tag, "<?php".',
"<?php\n");
}
break;
} else if ($token->getTypeName() == 'T_OPEN_TAG_WITH_ECHO') {
$this->raiseLintAtToken(
$token,
self::LINT_PHP_ECHO_TAG,
'Avoid the PHP echo short form, "<?=".');
break;
} else {
if (!preg_match('/^#!/', $token->getValue())) {
$this->raiseLintAtToken(
$token,
self::LINT_PHP_OPEN_TAG,
'PHP files should start with "<?php", which may be preceded by '.
'a "#!" line for scripts.');
}
break;
}
}
foreach ($root->selectTokensOfType('T_CLOSE_TAG') as $token) {
$this->raiseLintAtToken(
$token,
self::LINT_PHP_CLOSE_TAG,
'Do not use the PHP closing tag, "?>".');
}
}
protected function lintNamingConventions(XHPASTNode $root) {
// We're going to build up a list of <type, name, token, error> tuples
// and then try to instantiate a hook class which has the opportunity to
// override us.
$names = array();
$classes = $root->selectDescendantsOfType('n_CLASS_DECLARATION');
foreach ($classes as $class) {
$name_token = $class->getChildByIndex(1);
$name_string = $name_token->getConcreteString();
$names[] = array(
'class',
$name_string,
$name_token,
ArcanistXHPASTLintNamingHook::isUpperCamelCase($name_string)
? null
: 'Follow naming conventions: classes should be named using '.
'UpperCamelCase.',
);
}
$ifaces = $root->selectDescendantsOfType('n_INTERFACE_DECLARATION');
foreach ($ifaces as $iface) {
$name_token = $iface->getChildByIndex(1);
$name_string = $name_token->getConcreteString();
$names[] = array(
'interface',
$name_string,
$name_token,
ArcanistXHPASTLintNamingHook::isUpperCamelCase($name_string)
? null
: 'Follow naming conventions: interfaces should be named using '.
'UpperCamelCase.',
);
}
$functions = $root->selectDescendantsOfType('n_FUNCTION_DECLARATION');
foreach ($functions as $function) {
$name_token = $function->getChildByIndex(2);
if ($name_token->getTypeName() == 'n_EMPTY') {
// Unnamed closure.
continue;
}
$name_string = $name_token->getConcreteString();
$names[] = array(
'function',
$name_string,
$name_token,
ArcanistXHPASTLintNamingHook::isLowercaseWithUnderscores(
ArcanistXHPASTLintNamingHook::stripPHPFunction($name_string))
? null
: 'Follow naming conventions: functions should be named using '.
'lowercase_with_underscores.',
);
}
$methods = $root->selectDescendantsOfType('n_METHOD_DECLARATION');
foreach ($methods as $method) {
$name_token = $method->getChildByIndex(2);
$name_string = $name_token->getConcreteString();
$names[] = array(
'method',
$name_string,
$name_token,
ArcanistXHPASTLintNamingHook::isLowerCamelCase(
ArcanistXHPASTLintNamingHook::stripPHPFunction($name_string))
? null
: 'Follow naming conventions: methods should be named using '.
'lowerCamelCase.',
);
}
$param_tokens = array();
$params = $root->selectDescendantsOfType('n_DECLARATION_PARAMETER_LIST');
foreach ($params as $param_list) {
foreach ($param_list->getChildren() as $param) {
$name_token = $param->getChildByIndex(1);
if ($name_token->getTypeName() == 'n_VARIABLE_REFERENCE') {
$name_token = $name_token->getChildOfType(0, 'n_VARIABLE');
}
$param_tokens[$name_token->getID()] = true;
$name_string = $name_token->getConcreteString();
$names[] = array(
'parameter',
$name_string,
$name_token,
ArcanistXHPASTLintNamingHook::isLowercaseWithUnderscores(
ArcanistXHPASTLintNamingHook::stripPHPVariable($name_string))
? null
: 'Follow naming conventions: parameters should be named using '.
'lowercase_with_underscores.',
);
}
}
$constants = $root->selectDescendantsOfType(
'n_CLASS_CONSTANT_DECLARATION_LIST');
foreach ($constants as $constant_list) {
foreach ($constant_list->getChildren() as $constant) {
$name_token = $constant->getChildByIndex(0);
$name_string = $name_token->getConcreteString();
$names[] = array(
'constant',
$name_string,
$name_token,
ArcanistXHPASTLintNamingHook::isUppercaseWithUnderscores($name_string)
? null
: 'Follow naming conventions: class constants should be named '.
'using UPPERCASE_WITH_UNDERSCORES.',
);
}
}
$member_tokens = array();
$props = $root->selectDescendantsOfType('n_CLASS_MEMBER_DECLARATION_LIST');
foreach ($props as $prop_list) {
foreach ($prop_list->getChildren() as $token_id => $prop) {
if ($prop->getTypeName() == 'n_CLASS_MEMBER_MODIFIER_LIST') {
continue;
}
$name_token = $prop->getChildByIndex(0);
$member_tokens[$name_token->getID()] = true;
$name_string = $name_token->getConcreteString();
$names[] = array(
'member',
$name_string,
$name_token,
ArcanistXHPASTLintNamingHook::isLowerCamelCase(
ArcanistXHPASTLintNamingHook::stripPHPVariable($name_string))
? null
: 'Follow naming conventions: class properties should be named '.
'using lowerCamelCase.',
);
}
}
$superglobal_map = array_fill_keys(
$this->getSuperGlobalNames(),
true);
$fdefs = $root->selectDescendantsOfType('n_FUNCTION_DECLARATION');
$mdefs = $root->selectDescendantsOfType('n_METHOD_DECLARATION');
$defs = $fdefs->add($mdefs);
foreach ($defs as $def) {
$globals = $def->selectDescendantsOfType('n_GLOBAL_DECLARATION_LIST');
$globals = $globals->selectDescendantsOfType('n_VARIABLE');
$globals_map = array();
foreach ($globals as $global) {
$global_string = $global->getConcreteString();
$globals_map[$global_string] = true;
$names[] = array(
'user',
$global_string,
$global,
// No advice for globals, but hooks have an option to provide some.
null);
}
// Exclude access of static properties, since lint will be raised at
// their declaration if they're invalid and they may not conform to
// variable rules. This is slightly overbroad (includes the entire
// rhs of a "Class::..." token) to cover cases like "Class:$x[0]". These
// variables are simply made exempt from naming conventions.
$exclude_tokens = array();
$statics = $def->selectDescendantsOfType('n_CLASS_STATIC_ACCESS');
foreach ($statics as $static) {
$rhs = $static->getChildByIndex(1);
$rhs_vars = $def->selectDescendantsOfType('n_VARIABLE');
foreach ($rhs_vars as $var) {
$exclude_tokens[$var->getID()] = true;
}
}
$vars = $def->selectDescendantsOfType('n_VARIABLE');
foreach ($vars as $token_id => $var) {
if (isset($member_tokens[$token_id])) {
continue;
}
if (isset($param_tokens[$token_id])) {
continue;
}
if (isset($exclude_tokens[$token_id])) {
continue;
}
$var_string = $var->getConcreteString();
// Awkward artifact of "$o->{$x}".
$var_string = trim($var_string, '{}');
if (isset($superglobal_map[$var_string])) {
continue;
}
if (isset($globals_map[$var_string])) {
continue;
}
$names[] = array(
'variable',
$var_string,
$var,
ArcanistXHPASTLintNamingHook::isLowercaseWithUnderscores(
ArcanistXHPASTLintNamingHook::stripPHPVariable($var_string))
? null
: 'Follow naming conventions: variables should be named using '.
'lowercase_with_underscores.',
);
}
}
$engine = $this->getEngine();
$working_copy = $engine->getWorkingCopy();
if ($working_copy) {
// If a naming hook is configured, give it a chance to override the
// default results for all the symbol names.
$hook_class = $this->naminghook
? $this->naminghook
: $working_copy->getProjectConfig('lint.xhpast.naminghook');
if ($hook_class) {
$hook_obj = newv($hook_class, array());
foreach ($names as $k => $name_attrs) {
list($type, $name, $token, $default) = $name_attrs;
$result = $hook_obj->lintSymbolName($type, $name, $default);
$names[$k][3] = $result;
}
}
}
// Raise anything we're left with.
foreach ($names as $k => $name_attrs) {
list($type, $name, $token, $result) = $name_attrs;
if ($result) {
$this->raiseLintAtNode(
$token,
self::LINT_NAMING_CONVENTIONS,
$result);
}
}
}
protected function lintSurpriseConstructors(XHPASTNode $root) {
$classes = $root->selectDescendantsOfType('n_CLASS_DECLARATION');
foreach ($classes as $class) {
$class_name = $class->getChildByIndex(1)->getConcreteString();
$methods = $class->selectDescendantsOfType('n_METHOD_DECLARATION');
foreach ($methods as $method) {
$method_name_token = $method->getChildByIndex(2);
$method_name = $method_name_token->getConcreteString();
if (strtolower($class_name) == strtolower($method_name)) {
$this->raiseLintAtNode(
$method_name_token,
self::LINT_IMPLICIT_CONSTRUCTOR,
'Name constructors __construct() explicitly. This method is a '.
'constructor because it has the same name as the class it is '.
'defined in.');
}
}
}
}
protected function lintParenthesesShouldHugExpressions(XHPASTNode $root) {
$calls = $root->selectDescendantsOfType('n_CALL_PARAMETER_LIST');
$controls = $root->selectDescendantsOfType('n_CONTROL_CONDITION');
$fors = $root->selectDescendantsOfType('n_FOR_EXPRESSION');
$foreach = $root->selectDescendantsOfType('n_FOREACH_EXPRESSION');
$decl = $root->selectDescendantsOfType('n_DECLARATION_PARAMETER_LIST');
$all_paren_groups = $calls
->add($controls)
->add($fors)
->add($foreach)
->add($decl);
foreach ($all_paren_groups as $group) {
$tokens = $group->getTokens();
$token_o = array_shift($tokens);
$token_c = array_pop($tokens);
if ($token_o->getTypeName() != '(') {
throw new Exception('Expected open paren!');
}
if ($token_c->getTypeName() != ')') {
throw new Exception('Expected close paren!');
}
$nonsem_o = $token_o->getNonsemanticTokensAfter();
$nonsem_c = $token_c->getNonsemanticTokensBefore();
if (!$nonsem_o) {
continue;
}
$raise = array();
$string_o = implode('', mpull($nonsem_o, 'getValue'));
if (preg_match('/^[ ]+$/', $string_o)) {
$raise[] = array($nonsem_o, $string_o);
}
if ($nonsem_o !== $nonsem_c) {
$string_c = implode('', mpull($nonsem_c, 'getValue'));
if (preg_match('/^[ ]+$/', $string_c)) {
$raise[] = array($nonsem_c, $string_c);
}
}
foreach ($raise as $warning) {
list($tokens, $string) = $warning;
$this->raiseLintAtOffset(
reset($tokens)->getOffset(),
self::LINT_PARENTHESES_SPACING,
'Parentheses should hug their contents.',
$string,
'');
}
}
}
protected function lintSpaceAfterControlStatementKeywords(XHPASTNode $root) {
foreach ($root->getTokens() as $id => $token) {
switch ($token->getTypeName()) {
case 'T_IF':
case 'T_ELSE':
case 'T_FOR':
case 'T_FOREACH':
case 'T_WHILE':
case 'T_DO':
case 'T_SWITCH':
$after = $token->getNonsemanticTokensAfter();
if (empty($after)) {
$this->raiseLintAtToken(
$token,
self::LINT_CONTROL_STATEMENT_SPACING,
'Convention: put a space after control statements.',
$token->getValue().' ');
} else if (count($after) == 1) {
$space = head($after);
// If we have an else clause with braces, $space may not be
// a single white space. e.g.,
//
// if ($x)
// echo 'foo'
// else // <- $space is not " " but "\n ".
// echo 'bar'
//
// We just require it starts with either a whitespace or a newline.
if ($token->getTypeName() == 'T_ELSE' ||
$token->getTypeName() == 'T_DO') {
break;
}
if ($space->isAnyWhitespace() && $space->getValue() != ' ') {
$this->raiseLintAtToken(
$space,
self::LINT_CONTROL_STATEMENT_SPACING,
'Convention: put a single space after control statements.',
' ');
}
}
break;
}
}
}
protected function lintSpaceAroundBinaryOperators(XHPASTNode $root) {
$expressions = $root->selectDescendantsOfType('n_BINARY_EXPRESSION');
foreach ($expressions as $expression) {
$operator = $expression->getChildByIndex(1);
$operator_value = $operator->getConcreteString();
list($before, $after) = $operator->getSurroundingNonsemanticTokens();
$replace = null;
if (empty($before) && empty($after)) {
$replace = " {$operator_value} ";
} else if (empty($before)) {
$replace = " {$operator_value}";
} else if (empty($after)) {
$replace = "{$operator_value} ";
}
if ($replace !== null) {
$this->raiseLintAtNode(
$operator,
self::LINT_BINARY_EXPRESSION_SPACING,
'Convention: logical and arithmetic operators should be '.
'surrounded by whitespace.',
$replace);
}
}
$tokens = $root->selectTokensOfType(',');
foreach ($tokens as $token) {
$next = $token->getNextToken();
switch ($next->getTypeName()) {
case ')':
case 'T_WHITESPACE':
break;
default:
$this->raiseLintAtToken(
$token,
self::LINT_BINARY_EXPRESSION_SPACING,
'Convention: comma should be followed by space.',
', ');
break;
}
}
$tokens = $root->selectTokensOfType('T_DOUBLE_ARROW');
foreach ($tokens as $token) {
$prev = $token->getPrevToken();
$next = $token->getNextToken();
$prev_type = $prev->getTypeName();
$next_type = $next->getTypeName();
$prev_space = ($prev_type == 'T_WHITESPACE');
$next_space = ($next_type == 'T_WHITESPACE');
$replace = null;
if (!$prev_space && !$next_space) {
$replace = ' => ';
} else if ($prev_space && !$next_space) {
$replace = '=> ';
} else if (!$prev_space && $next_space) {
$replace = ' =>';
}
if ($replace !== null) {
$this->raiseLintAtToken(
$token,
self::LINT_BINARY_EXPRESSION_SPACING,
'Convention: double arrow should be surrounded by whitespace.',
$replace);
}
}
// TODO: Spacing around default parameter assignment in function/method
// declarations (which is not n_BINARY_EXPRESSION).
}
protected function lintSpaceAroundConcatenationOperators(XHPASTNode $root) {
$tokens = $root->selectTokensOfType('.');
foreach ($tokens as $token) {
$prev = $token->getPrevToken();
$next = $token->getNextToken();
foreach (array('prev' => $prev, 'next' => $next) as $wtoken) {
if ($wtoken->getTypeName() != 'T_WHITESPACE') {
continue;
}
$value = $wtoken->getValue();
if (strpos($value, "\n") !== false) {
// If the whitespace has a newline, it's conventional.
continue;
}
$next = $wtoken->getNextToken();
if ($next && $next->getTypeName() == 'T_COMMENT') {
continue;
}
$this->raiseLintAtToken(
$wtoken,
self::LINT_BINARY_EXPRESSION_SPACING,
'Convention: no spaces around "." (string concatenation) operator.',
'');
}
}
}
protected function lintDynamicDefines(XHPASTNode $root) {
$calls = $root->selectDescendantsOfType('n_FUNCTION_CALL');
foreach ($calls as $call) {
$name = $call->getChildByIndex(0)->getConcreteString();
if (strtolower($name) == 'define') {
$parameter_list = $call->getChildOfType(1, 'n_CALL_PARAMETER_LIST');
$defined = $parameter_list->getChildByIndex(0);
if (!$defined->isStaticScalar()) {
$this->raiseLintAtNode(
$defined,
self::LINT_DYNAMIC_DEFINE,
'First argument to define() must be a string literal.');
}
}
}
}
protected function lintUseOfThisInStaticMethods(XHPASTNode $root) {
$classes = $root->selectDescendantsOfType('n_CLASS_DECLARATION');
foreach ($classes as $class) {
$methods = $class->selectDescendantsOfType('n_METHOD_DECLARATION');
foreach ($methods as $method) {
$attributes = $method
->getChildByIndex(0, 'n_METHOD_MODIFIER_LIST')
->selectDescendantsOfType('n_STRING');
$method_is_static = false;
$method_is_abstract = false;
foreach ($attributes as $attribute) {
if (strtolower($attribute->getConcreteString()) == 'static') {
$method_is_static = true;
}
if (strtolower($attribute->getConcreteString()) == 'abstract') {
$method_is_abstract = true;
}
}
if ($method_is_abstract) {
continue;
}
if (!$method_is_static) {
continue;
}
$body = $method->getChildOfType(5, 'n_STATEMENT_LIST');
$variables = $body->selectDescendantsOfType('n_VARIABLE');
foreach ($variables as $variable) {
if ($method_is_static &&
strtolower($variable->getConcreteString()) == '$this') {
$this->raiseLintAtNode(
$variable,
self::LINT_STATIC_THIS,
'You can not reference "$this" inside a static method.');
}
}
}
}
}
/**
* preg_quote() takes two arguments, but the second one is optional because
* it is possible to use (), [] or {} as regular expression delimiters. If
* you don't pass a second argument, you're probably going to get something
* wrong.
*/
protected function lintPregQuote(XHPASTNode $root) {
$function_calls = $root->selectDescendantsOfType('n_FUNCTION_CALL');
foreach ($function_calls as $call) {
$name = $call->getChildByIndex(0)->getConcreteString();
if (strtolower($name) === 'preg_quote') {
$parameter_list = $call->getChildOfType(1, 'n_CALL_PARAMETER_LIST');
if (count($parameter_list->getChildren()) !== 2) {
$this->raiseLintAtNode(
$call,
self::LINT_PREG_QUOTE_MISUSE,
'If you use pattern delimiters that require escaping (such as //, '.
'but not ()) then you should pass two arguments to preg_quote(), '.
'so that preg_quote() knows which delimiter to escape.');
}
}
}
}
/**
* Exit is parsed as an expression, but using it as such is almost always
* wrong. That is, this is valid:
*
* strtoupper(33 * exit - 6);
*
* When exit is used as an expression, it causes the program to terminate with
* exit code 0. This is likely not what is intended; these statements have
* different effects:
*
* exit(-1);
* exit -1;
*
* The former exits with a failure code, the latter with a success code!
*/
protected function lintExitExpressions(XHPASTNode $root) {
$unaries = $root->selectDescendantsOfType('n_UNARY_PREFIX_EXPRESSION');
foreach ($unaries as $unary) {
$operator = $unary->getChildByIndex(0)->getConcreteString();
if (strtolower($operator) == 'exit') {
if ($unary->getParentNode()->getTypeName() != 'n_STATEMENT') {
$this->raiseLintAtNode(
$unary,
self::LINT_EXIT_EXPRESSION,
'Use exit as a statement, not an expression.');
}
}
}
}
private function lintArrayIndexWhitespace(XHPASTNode $root) {
$indexes = $root->selectDescendantsOfType('n_INDEX_ACCESS');
foreach ($indexes as $index) {
$tokens = $index->getChildByIndex(0)->getTokens();
$last = array_pop($tokens);
$trailing = $last->getNonsemanticTokensAfter();
$trailing_text = implode('', mpull($trailing, 'getValue'));
if (preg_match('/^ +$/', $trailing_text)) {
$this->raiseLintAtOffset(
$last->getOffset() + strlen($last->getValue()),
self::LINT_ARRAY_INDEX_SPACING,
'Convention: no spaces before index access.',
$trailing_text,
'');
}
}
}
protected function lintTODOComments(XHPASTNode $root) {
$comments = $root->selectTokensOfType('T_COMMENT') +
$root->selectTokensOfType('T_DOC_COMMENT');
foreach ($comments as $token) {
$value = $token->getValue();
if ($token->getTypeName() === 'T_DOC_COMMENT') {
$regex = '/(TODO|@todo)/';
} else {
$regex = '/TODO/';
}
$matches = null;
$preg = preg_match_all(
$regex,
$value,
$matches,
PREG_OFFSET_CAPTURE);
foreach ($matches[0] as $match) {
list($string, $offset) = $match;
$this->raiseLintAtOffset(
$token->getOffset() + $offset,
self::LINT_TODO_COMMENT,
'This comment has a TODO.',
$string);
}
}
}
/**
* Lint that if the file declares exactly one interface or class,
* the name of the file matches the name of the class,
* unless the classname is funky like an XHP element.
*/
private function lintPrimaryDeclarationFilenameMatch(XHPASTNode $root) {
$classes = $root->selectDescendantsOfType('n_CLASS_DECLARATION');
$interfaces = $root->selectDescendantsOfType('n_INTERFACE_DECLARATION');
if (count($classes) + count($interfaces) != 1) {
return;
}
$declarations = count($classes) ? $classes : $interfaces;
$declarations->rewind();
$declaration = $declarations->current();
$decl_name = $declaration->getChildByIndex(1);
$decl_string = $decl_name->getConcreteString();
// Exclude strangely named classes, e.g. XHP tags.
if (!preg_match('/^\w+$/', $decl_string)) {
return;
}
$rename = $decl_string.'.php';
$path = $this->getActivePath();
$filename = basename($path);
if ($rename == $filename) {
return;
}
$this->raiseLintAtNode(
$decl_name,
self::LINT_CLASS_FILENAME_MISMATCH,
"The name of this file differs from the name of the class or interface ".
"it declares. Rename the file to '{$rename}'.");
}
private function lintPlusOperatorOnStrings(XHPASTNode $root) {
$binops = $root->selectDescendantsOfType('n_BINARY_EXPRESSION');
foreach ($binops as $binop) {
$op = $binop->getChildByIndex(1);
if ($op->getConcreteString() != '+') {
continue;
}
$left = $binop->getChildByIndex(0);
$right = $binop->getChildByIndex(2);
if (($left->getTypeName() == 'n_STRING_SCALAR') ||
($right->getTypeName() == 'n_STRING_SCALAR')) {
$this->raiseLintAtNode(
$binop,
self::LINT_PLUS_OPERATOR_ON_STRINGS,
"In PHP, '.' is the string concatenation operator, not '+'. This ".
"expression uses '+' with a string literal as an operand.");
}
}
}
/**
* Finds duplicate keys in array initializers, as in
* array(1 => 'anything', 1 => 'foo'). Since the first entry is ignored,
* this is almost certainly an error.
*/
private function lintDuplicateKeysInArray(XHPASTNode $root) {
$array_literals = $root->selectDescendantsOfType('n_ARRAY_LITERAL');
foreach ($array_literals as $array_literal) {
$nodes_by_key = array();
$keys_warn = array();
$list_node = $array_literal->getChildByIndex(0);
foreach ($list_node->getChildren() as $array_entry) {
$key_node = $array_entry->getChildByIndex(0);
switch ($key_node->getTypeName()) {
case 'n_STRING_SCALAR':
case 'n_NUMERIC_SCALAR':
// Scalars: array(1 => 'v1', '1' => 'v2');
$key = 'scalar:'.(string)$key_node->evalStatic();
break;
case 'n_SYMBOL_NAME':
case 'n_VARIABLE':
case 'n_CLASS_STATIC_ACCESS':
// Constants: array(CONST => 'v1', CONST => 'v2');
// Variables: array($a => 'v1', $a => 'v2');
// Class constants and vars: array(C::A => 'v1', C::A => 'v2');
$key = $key_node->getTypeName().':'.$key_node->getConcreteString();
break;
default:
$key = null;
break;
}
if ($key !== null) {
if (isset($nodes_by_key[$key])) {
$keys_warn[$key] = true;
}
$nodes_by_key[$key][] = $key_node;
}
}
foreach ($keys_warn as $key => $_) {
$node = array_pop($nodes_by_key[$key]);
$message = $this->raiseLintAtNode(
$node,
self::LINT_DUPLICATE_KEYS_IN_ARRAY,
'Duplicate key in array initializer. PHP will ignore all '.
'but the last entry.');
$locations = array();
foreach ($nodes_by_key[$key] as $node) {
$locations[] = $this->getOtherLocation($node->getOffset());
}
$message->setOtherLocations($locations);
}
}
}
private function lintRaggedClasstreeEdges(XHPASTNode $root) {
$parser = new PhutilDocblockParser();
$classes = $root->selectDescendantsOfType('n_CLASS_DECLARATION');
foreach ($classes as $class) {
$is_final = false;
$is_abstract = false;
$is_concrete_extensible = false;
$attributes = $class->getChildOfType(0, 'n_CLASS_ATTRIBUTES');
foreach ($attributes->getChildren() as $child) {
if ($child->getConcreteString() == 'final') {
$is_final = true;
}
if ($child->getConcreteString() == 'abstract') {
$is_abstract = true;
}
}
$docblock = $class->getDocblockToken();
if ($docblock) {
list($text, $specials) = $parser->parse($docblock->getValue());
$is_concrete_extensible = idx($specials, 'concrete-extensible');
}
if (!$is_final && !$is_abstract && !$is_concrete_extensible) {
$this->raiseLintAtNode(
$class->getChildOfType(1, 'n_CLASS_NAME'),
self::LINT_RAGGED_CLASSTREE_EDGE,
"This class is neither 'final' nor 'abstract', and does not have ".
"a docblock marking it '@concrete-extensible'.");
}
}
}
private function lintClosingCallParen(XHPASTNode $root) {
$calls = $root->selectDescendantsOfType('n_FUNCTION_CALL');
$calls = $calls->add($root->selectDescendantsOfType('n_METHOD_CALL'));
foreach ($calls as $call) {
// If the last parameter of a call is a HEREDOC, don't apply this rule.
$params = $call
->getChildOfType(1, 'n_CALL_PARAMETER_LIST')
->getChildren();
if ($params) {
$last_param = last($params);
if ($last_param->getTypeName() == 'n_HEREDOC') {
continue;
}
}
$tokens = $call->getTokens();
$last = array_pop($tokens);
$trailing = $last->getNonsemanticTokensBefore();
$trailing_text = implode('', mpull($trailing, 'getValue'));
if (preg_match('/^\s+$/', $trailing_text)) {
$this->raiseLintAtOffset(
$last->getOffset() - strlen($trailing_text),
self::LINT_CLOSING_CALL_PAREN,
'Convention: no spaces before closing parenthesis in calls.',
$trailing_text,
'');
}
}
}
private function lintClosingDeclarationParen(XHPASTNode $root) {
$decs = $root->selectDescendantsOfType('n_FUNCTION_DECLARATION');
$decs = $decs->add($root->selectDescendantsOfType('n_METHOD_DECLARATION'));
foreach ($decs as $dec) {
$params = $dec->getChildOfType(3, 'n_DECLARATION_PARAMETER_LIST');
$tokens = $params->getTokens();
$last = array_pop($tokens);
$trailing = $last->getNonsemanticTokensBefore();
$trailing_text = implode('', mpull($trailing, 'getValue'));
if (preg_match('/^\s+$/', $trailing_text)) {
$this->raiseLintAtOffset(
$last->getOffset() - strlen($trailing_text),
self::LINT_CLOSING_DECL_PAREN,
'Convention: no spaces before closing parenthesis in function and '.
'method declarations.',
$trailing_text,
'');
}
}
}
private function lintKeywordCasing(XHPASTNode $root) {
$keywords = array();
$symbols = $root->selectDescendantsOfType('n_SYMBOL_NAME');
foreach ($symbols as $symbol) {
$keywords[] = head($symbol->getTokens());
}
$arrays = $root->selectDescendantsOfType('n_ARRAY_LITERAL');
foreach ($arrays as $array) {
$keywords[] = head($array->getTokens());
}
$typehints = $root->selectDescendantsOfType('n_TYPE_NAME');
foreach ($typehints as $typehint) {
$keywords[] = head($typehint->getTokens());
}
$new_invocations = $root->selectDescendantsOfType('n_NEW');
foreach ($new_invocations as $invocation) {
$keywords[] = head($invocation->getTokens());
}
// NOTE: Although PHP generally allows arbitrary casing for all language
// keywords, it's exceedingly rare for anyone to type, e.g., "CLASS" or
// "cLaSs" in the wild. This list just attempts to cover unconventional
// spellings which see some level of use, not all keywords exhaustively.
// There is no token or node type which spans all keywords, so this is
// significantly simpler.
static $keyword_map = array(
'true' => 'true',
'false' => 'false',
'null' => 'null',
'array' => 'array',
'new' => 'new',
);
foreach ($keywords as $keyword) {
$value = $keyword->getValue();
$value_key = strtolower($value);
if (!isset($keyword_map[$value_key])) {
continue;
}
$expected_spelling = $keyword_map[$value_key];
if ($value !== $expected_spelling) {
$this->raiseLintAtToken(
$keyword,
self::LINT_KEYWORD_CASING,
"Convention: spell keyword '{$value}' as '{$expected_spelling}'.",
$expected_spelling);
}
}
}
private function lintStrings(XHPASTNode $root) {
$nodes = $root->selectDescendantsOfTypes(array(
'n_CONCATENATION_LIST',
'n_STRING_SCALAR'));
foreach ($nodes as $node) {
$strings = array();
if ($node->getTypeName() === 'n_CONCATENATION_LIST') {
$strings = $node->selectDescendantsOfType('n_STRING_SCALAR');
} else if ($node->getTypeName() === 'n_STRING_SCALAR') {
$strings = array($node);
if ($node->getParentNode()->getTypeName() === 'n_CONCATENATION_LIST') {
continue;
}
}
$valid = false;
$invalid_nodes = array();
$fixes = array();
foreach ($strings as $string) {
$concrete_string = $string->getConcreteString();
$single_quoted = ($concrete_string[0] === "'");
$contents = substr($concrete_string, 1, -1);
// Double quoted strings are allowed when the string contains the
// following characters.
static $allowed_chars = array(
'\n',
'\r',
'\t',
'\v',
'\e',
'\f',
'\'',
'\0',
'\1',
'\2',
'\3',
'\4',
'\5',
'\6',
'\7',
'\x',
);
$contains_special_chars = false;
foreach ($allowed_chars as $allowed_char) {
if (strpos($contents, $allowed_char) !== false) {
$contains_special_chars = true;
}
}
if (!$string->isConstantString()) {
$valid = true;
} else if ($contains_special_chars && !$single_quoted) {
$valid = true;
} else if (!$contains_special_chars && !$single_quoted) {
$invalid_nodes[] = $string;
$fixes[$string->getID()] = "'".str_replace('\"', '"', $contents)."'";
}
}
if (!$valid) {
foreach ($invalid_nodes as $invalid_node) {
$this->raiseLintAtNode(
$invalid_node,
self::LINT_DOUBLE_QUOTE,
pht(
'String does not require double quotes. For consistency, '.
'prefer single quotes.'),
$fixes[$invalid_node->getID()]);
}
}
}
}
protected function lintElseIfStatements(XHPASTNode $root) {
$tokens = $root->selectTokensOfType('T_ELSEIF');
foreach ($tokens as $token) {
$this->raiseLintAtToken(
$token,
self::LINT_ELSEIF_USAGE,
pht('Usage of `else if` is preferred over `elseif`.'),
'else if');
}
}
protected function lintSemicolons(XHPASTNode $root) {
$tokens = $root->selectTokensOfType(';');
foreach ($tokens as $token) {
$prev = $token->getPrevToken();
if ($prev->isAnyWhitespace()) {
$this->raiseLintAtToken(
$prev,
self::LINT_SEMICOLON_SPACING,
pht('Space found before semicolon.'),
'');
}
}
}
public function getSuperGlobalNames() {
return array(
'$GLOBALS',
'$_SERVER',
'$_GET',
'$_POST',
'$_FILES',
'$_COOKIE',
'$_SESSION',
'$_REQUEST',
'$_ENV',
);
}
}

File Metadata

Mime Type
text/x-diff
Expires
Sat, Nov 8, 06:36 (1 d, 17 h)
Storage Engine
blob
Storage Format
Raw Data
Storage Handle
1034204
Default Alt Text
(407 KB)

Event Timeline