Aunque la mayoría del código existente en PHP 4 debe de correr sin modificaciones, se debe de prestar atención a los siguientes cambios incompatibles entre versiones:
E_ERROR
en lugar de
E_WARNING
. Un ejemplo de uso ilegal es:
$str = 'abc'; unset($str[0]);.
E_WARNING
por
cada parámetro. Debe tenerse cuidado para que un código no comience a emitir
E_WARNING
de la nada.
PATH_TRANSLATED
ya no se establece implicitamente en
Apache2 SAPI tal como sucedía en PHP 4, donde se establecía el mismo valor que contenía
la variable de servidor SCRIPT_FILENAME
cuando ésta no estaba completada
por Apache. Este cambio fue realizada para cumplir con las » Especificación CGI/1.1. Por favor consulte » bug #23610 para más información,
vea tambien la descripción de $_SERVER['PATH_TRANSLATED']
en el manual. Este problema también afecta las versiones de PHP >= 4.3.2.
T_ML_COMMENT
ya no se define por la
extensión Tokenizer. Si se configura
error_reporting a E_ALL
, PHP emitirá
un aviso. Aunque T_ML_COMMENT
no llegó a usarse,
estaba definido en PHP 4. Tanto en PHP 4 y PHP 5
// y /* */ se resuelven a la constante T_COMMENT
.
En cualquier caso los comentarios tipo PHPDoc /** */, introducidos en PHP
5, son interpretados por PHP, y son reconocidos como T_DOC_COMMENT
.
__CLASS__
,
__METHOD__
, y __FUNCTION__
.
Se devuelven los valores exactamente como se declararon (sensible a mayúsculas).
FALSE
cuando se proporciona una
IP inválida como argumento a la función, y no
-1.
Ejemplo #1 strrpos() y strripos() ahora usan todo el string como cadena de búsqueda
<?php
var_dump(strrpos('ABCDEF','DEF')); //int(3)
var_dump(strrpos('ABCDEF','DAF')); //bool(false)
?>
Ejemplo #2 Ya no se considera "vacío" un objeto sin propiedades
<?php
class test { }
$t = new test();
var_dump(empty($t)); // echo bool(false)
if ($t) {
// Se ejecutará
}
?>
Ejemplo #3 En algunos casos, se deben definir las clases antes de usarlas
<?php
//Funciona sin errores:
$a = new a();
class a {
}
//lanza un error:
$a = new b();
interface c{
}
class b implements c {
}
?>