Ahora que PHP ha crecido y se ha convertido en un lenguaje popular, hay muchas mas fuentes de recursos conteniendo código que puedes reusar en tu propio programa. Por la mayor parte las personas que mantienen PHP tratan de que el lenguaje sea compatible con versiones anteriores, para que los programas escritos con versiones antiguas continúen funcionando cuando instalas una nueva versión de PHP. En un mundo perfecto tu nunca necesitarías modificar tu código para hacerlo funcionar con versiones nuevas del lenguaje; pero como todos sabemos este no es un mundo perfecto, usualmente cambios en tu código son necesarios.
Dos de los cambios mas importantes que afectan código viejo son:
La desaparición de los arrays $HTTP_*_VARS (que usualmente son indicados como una global cuando su usan dentro de una función o método). Los siguientes arrays de Autoglobal son introducidos en la versión 4.1.0. de PHP. Estas son: $_GET, $_POST, $_COOKIE, $_SERVER, $_FILES, $_ENV, $_REQUEST, y $_SESSION. los antiguos $HTTP_*_VARS como $HTTP_POST_VARS, todavía existen, y han existido desde PHP 3
Las variables externas que ya no son registradas automáticamente. En otras palabras, desde PHP 4.2.0, la directiva PHP register_globals esta off (desactivada) en php.ini. El método preferido para obtener acceso a estos valores es por medio de los "Autoglobal arrays" mencionados anteriormente. Scripts que son antiguos, libros y tutoriales pueden asumir que esta directiva es automáticamente "on". Si "on" por ejemplo tu puedes usar $id desde el URL http://www.example.com/foo.php?id=42. No importa si es "on" u "off", $_GET['id'] esta siempre disponible.