Using old code with new versions of PHP
Now that PHP has grown to be a popular scripting language,
there are a lot of public repositories/libraries containing
code you can reuse. The PHP developers have largely tried
to preserve backwards compatibility, so a script written for
an older version will run (ideally) without changes in a newer
version of PHP. In practice, some changes will usually be
needed.
Two of the most important recent changes that affect old
code are:
-
The deprecation of the old $HTTP_*_VARS
arrays (which need to be indicated as global when used
inside a function or method). The following autoglobal
arrays were introduced in PHP 4.1.0. They are: $_GET,
$_POST, $_COOKIE, $_SERVER, $_FILES, $_ENV, $_REQUEST,
and $_SESSION. The older $HTTP_*_VARS arrays, such as
$HTTP_POST_VARS, still exist as they have since PHP 3.
As of PHP 5.0.0, the long PHP predefined variable arrays
may be disabled with the register_long_arrays directive.
-
External variables are no longer registered
in the global scope by default. In other words, as of
PHP 4.2.0 the PHP directive register_globals is off by
default in php.ini. The preferred method of accessing
these values is via the autoglobal arrays mentioned above.
Older scripts, books, and tutorials may rely on this directive
being on. If it were on, for example, one could use $id
from the URL http://www.example.com/foo.php?id=42. Whether
on or off, $_GET['id'] is available.
For more details on these changes, see the section on predefined
variables and links therein.
|