Base de conocimientos
1000 FAQ, 500 tutoriales y vídeos explicativos. ¡Aquí sólo hay soluciones!
Migrar un alojamiento PHP 4 hacia PHP 5.2
PHP 4.x y PHP 5.2.xtienen cada uno sus propias ventajas y son poco compatibles entre ellos. Unabuena parte de los scripts previstos para PHP 4 no funcionarán con PHP 5 yviceversa. Le proporcionamos los detalles a continuación, pero lerecomendamos con insistencia que, antes de solicitar una migración paracambiar de plataforma, pruebe su sitio al completo en su propia máquina (elservidor web Apache se puede descargar de forma gratuita en http://www.apache.org, PHP estádisponible en http://www.php.org para las versiones 4 y 5).
Si utiliza scripts PHP queno han sido concebidos para la versión 5, deberá verificar imperativamentesi sus diseñadores proponen actualizaciones o nuevas versiones que funcionenen la versión 5.
¿Escribió el código PHP de su sitio hace muchosaños y no está seguro de que funcione en PHP 5? Aquí tiene algunasdiferencias entre estas dos versiones:
strrpos y stripos()utilizan ahora una cadena entera. En la base, estas funciones buscan laocurrencia de un solo carácter en una cadena.
La utilizaciónindebida de un índice en una cadena de caracteres produce un error E_ERRORen el enlace de una advertencia E_WARNING (ejemplo : $str = 'abc';unset($str[0]);)
array_merge() sólo acepta tablas. Si deseaañadir un elemento a una tabla y quiere utilizar absolutamente esta función(y no array_push), deberá colocar su elemento en una tabla:array_merge($mitabla, array ($mielemento) ). Si, aun así, utiliza estafunción con un elemento que no sea una tabla, se enviará una advertenciaE_WARNING y la tabla resultante estará vacía.
La variable deservidor PATH_TRANSLATED no tiene por qué contener el mismo valor que en PHP4. Se utilizaba, a veces, en el caso de una reescritura de los enlaces enApache (ModRewrite).
La constante T_ML_CONSTANT ya no existe(estaba definida por la extensión Tokenizer).
La versión CLI dePHP 5 utilizará siempre las variables globales $argc y $argv.
Unobjeto sin propiedades ya no se considera vacío (empty)
get_class() devuelve el nombre de la función tal y como se declaró sinmodificar la casilla. En PHP, el nombre devuelto siempre estaba enminúscula. Lo mismo ocurría con las constantes mágicas predefinidas__CLASS__, __METHOD__ y __FUNCTION__.
ip2long() devuelve ahora elbooleano falso (false) si la dirección proporcionada es incorrecta. En PHP4, la función devolvía -1.
Hay que despreciar la función is_a() yno utilizarla más. En su lugar, hay que utilizar el operador instanceof.
Ya no podrá reasignar $this a un objeto.
include_once() yrequire_once() normalizan de entrada la ruta del archivo a incluir enWindows, por lo tanto, incluir el archivo A.php y el archivo a.phpcorresponde a incluir una sola vez el archivo.
PHP 5 reservaalgunas palabras clave , por lo que no debe utilizarlas: exception,interface, protected, throw, abstract, implements, clone, final, public,try, this, php_user_filter, private, catch. La mayoría de estas palabrasclave vienen de la extensión de la concepción de objeto de PHP 5, con losconceptos de variables privadas / públicas, la gestión de los errores (try /catch, que los fans de Java tienen que saberse de memoria), etc.
Enlace a esta FAQ: