Funcionalidades obsoletas en PHP 5.3.x

PHP 5.3.0 introduce dos nuevos niveles de error: E_DEPRECATED y E_USER_DEPRECATED. El nivel de error E_DEPRECATED se usa para indicar que una función o funcionalidad está obsoleto. El nivel de error E_USER_DEPRECATED tiene por objetivo indicar las funcionalidades obsoletas en el código de usuario, de forma similar a los niveles de error E_USER_ERROR y E_USER_WARNING.

La siguiente es una lista de directivas INI obsoletas. El uso de cualquiera de estas directivas INI provocará un error E_DEPRECATED al arrancar.

Funciones obsoletas:

Funcionalidades obsoletas:

  • Ahora está obsoleto asignar el valor devuelto por new por referencia.
  • Ha quedado obsoleto el paso por referencia en tiempo de llamada.
add a note add a note

User Contributed Notes 4 notes

up
0
info at djdb dot be
6 years ago
mktime ()  looks not deprecated

see
mktime

(PHP 4, PHP 5, PHP 7)

mktime — Get Unix timestamp for a date
up
-5
Anonymous
14 years ago
A backward compatibility break which is not documented:

Fatal error: Uncaught exception 'RuntimeException' with message 'Directory name must not be empty.'

This happens with new RecursiveIteratorIterator( new RecursiveDirectoryIterator( $staticPath ) )
up
-6
shad at shartley dot net
14 years ago
Correction on my previous note.

sed -i 's/\$HTTP_\(.*\)_VARS/\$_\1/g' {} \;

will screw up multiple instances of $HTTP_*_VARS in the file.

You'll have to use an instance of sed like:

sed -i 's/\$HTTP_SERVER_VARS/\$_SERVER/g'
i.e.
find ./ -name "*.php" -exec sed -i 's/\$HTTP_POST_VARS/\$_POST/g' {} \;
find ./ -name "*.php" -exec sed -i 's/\$HTTP_GET_VARS/\$_GET/g' {} \;
...

for each of the deprecated variables you might have in your files.

It also occurred to me a simple php conversion script would also work:

$search=array(
    "/HTTP_SERVER_VARS/",
    "/HTTP_POST_VARS/",
    "/HTTP_ENV_VARS/",
    "/HTTP_GET_VARS/",
    "/HTTP_COOKIE_VARS/",
    "/HTTP_SESSION_VARS/",
    "/HTTP_POST_FILES/");
$replace=array(
    "_SERVER",
     "_POST",
    "_ENV",
    "_GET",
    "_COOKIES",
    "_SESSION","_FILES");
$content=file_get_contents("somefile.php");
$content=preg_replace($search,$replace,$content);
file_put_contents("somefile.php",$content);

add directory recursion functions, ect.
up
-7
shad at shartley dot net
14 years ago
If you previously defined register_long_arrays in php.ini and have a lot of code with $HTTP_*_VARS that need to be replaced the following may help on *.nix systems:

sed -i 's/\$HTTP_\(.*\)_VARS/\$_\1/g' filename.php

What this command does is replace all occurrences of $HTTP_*_VARS with their respective $_ counter parts, e.g. $HTTP_COOKIES_VAR to $_COOKIES

To replace alot of files, you might combine it with the find command: 
find ./ -name "*.php" -exec sed -i 's/\$HTTP_\(.*\)_VARS/\$_\1/g' {} \;

For other deprecated variables like $HTTP_POST_FILES change your sed arguments:

sed -i 's/\$HTTP_POST_FILES/\$_FILES/g'

Deprecated variables created by the register_long_arrays directive as far as I know are:
$_POST
$_GET
$_SERVER
$_ENV
$_COOKIE
$_SESSION
To Top