'upgrade.php' is a PHP script. It defines missing PHP functions, which makes it an easy solution for using newer features on older PHP installations. Most functions are combined into an all-in-one library. Emulations for some PHP extensions come as separate scripts, to keep the main file below 30K in real code (it's 2/3 comments).

== Usage ==

<?php
   if (PHP_VERSION < 5.1) { include_once("upgrade.php"); }
   json_encode("this will always work now");
?>

This is the bugtracker / version control site for upgradephp. The current project homepage is located at BerliOS devloper under


== Main ==

[upgrade.php] emulates following functions:
· json_encode · json_decode · preg_filter · lcfirst · array_replace · strptime · error_get_last · preg_last_error · lchown · lchgrp · gzdecode · ob_get_headers · xmlentities · stripos · strripos · str_ireplace · get_headers · headers_list · fprintf · vfprintf · str_split · http_build_query · convert_uuencode · convert_uudecode · scandir · idate · time_nanosleep · strpbrk · php_real_logo_guid · php_egg_logo_guid · php_strip_whitespace · php_check_syntax · get_declared_interfaces · array_combine · array_walk_recursive · substr_compare · spl_classes · class_parents · session_commit · dns_check_record · dns_get_mx · setrawcookie · file_put_contents · file_get_contents · fnmatch · glob · array_key_exists · array_intersect_assoc · array_diff_assoc · html_entity_decode · str_word_count · str_shuffle · get_include_path · set_include_path · restore_include_path · str_rot13 · array_change_key_case · array_fill · array_chunk · md5_file · is_a · fmod · floatval · is_infinite · is_nan · is_finite · var_export · strcoll · diskfreespace · disktotalspace · vprintf · vsprintf · import_request_variables · hypot · log1p · expm1 · sinh · cosh · tanh · asinh · acosh · atanh · array_udiff_uassoc · array_udiff_assoc · array_diff_uassoc · array_udiff · array_uintersect_uassoc · array_uintersect_assoc · array_uintersect · array_intersect_uassoc · mime_content_type · image_type_to_mime_type · image_type_to_extension · exif_imagetype · array_filter · array_map · is_callable · array_search · array_reduce · is_scalar · localeconv · call_user_func_array · call_user_method_array · array_sum · constant · is_null · pathinfo · escapeshellarg · is_uploaded_file · move_uploaded_file · strncasecmp · wordwrap · php_uname · php_sapi_name


== Modules ==

[gettext.php] adds _() and various gettext() features. This extension is commonly used for localizing applications. Unlike other methods this is extremely easy to apply in source code.

[ftp.php] reimplements FTP access using plain PHP socket functions.

[ctype.php] provides a set of character classification functions.

[mime.php] has MIME magic filetype detection functions.

[pdo.php] is an emulatoion of the PDO database abstraction layer for PHP 4.x and PHP 5.0.

[pspell.php] uses the commandline aspell utility to emulate the pspell_*() type of functions for checking for natural language spelling errors.

[bcmath.php] for arbitrary precision math functions.

[php40array.php] archives the more seldomly used array functions. This has been extracted from the main script, to keep it lean.

The historic [php40.php] provides some functions for PHP 4.0 compatibility. Alltough nobody probably still has such old PHP versions running.


== Nonstandard ==

Distributed alongside upgrade.php are a few function collections, which aren't really standard PHP. The author just has been too lazy to instantiat individual project hosting sites.

[http_query.class.php] provides HttpRequest funtionality. It is partly compatible to PEAR::HTTPRequest, but mainly in place to later have an emulation for the PHP/PECL http extension and http_* functions.

[input.php] is a highly recommended security feature. It wraps the input arrays $_GET, $_POST, $_REQUEST, $_COOKIE, $_SERVER into an object-oriented access layer. This OO access wrapper only allows access to submitted form data and HTTP variables through filter features. In essence this enforces input validation, because raw access is prevented (or at least can be logged).