A maioria dos códigos PHP 4 existentes deve funcionar sem mudanças, mas você deve ter atenção às seguintes alterações incompatíves com versões anteriores:
E_ERROR ao invés
de E_WARNING. Um exemplo de uso ilegal é:
$str = 'abc'; unset($str[0]);.
E_WARNING será lançado
para cada parâmetro. Tenha cuidado porque seu código pode iniciar
emitindo um E_WARNING.
PATH_TRANSLATED não é mais setada implicitamente no
Apache2 SAPI em contraste com o ocorrido no PHP 4, onde ele é setado com
o mesmo valor que a variável de servidor SCRIPT_FILENAME quando não era
populada pelo Apache. Esta mudança foi realizada para seguir a » Especificação CGI/1.1. Por favor consulte o » bug #23610 para mais informações,
e veja mais sobre a descrição do $_SERVER['PATH_TRANSLATED']
no manual. Este problema
afeta as versões >= 4.3.2 do PHP.
T_ML_COMMENT não é mais definida
pela extensão Tokenizer. Se o
error_reporting estiver configurado para E_ALL, o PHP irá
gerar um aviso. Embora o T_ML_COMMENT não
ser usado totalmente, ele é definido no PHP 4. Em ambas versões, PHP 4 e PHP 5,
// e /* */ são consideradas como constantes T_COMMENT
. Entrentanto, o estilo de comentários do PHPDoc /** */, que começou a ser interpretado
pelo PHP 5, é reconhecido como T_DOC_COMMENT.
__CLASS__,
__METHOD__, e __FUNCTION__.
Esses valores são retornadas exatamente como são declarados (case-sensitive).
FALSE quando um endereço IP inválido
é passado como argumento para a funcão, e não mais
-1.
Exemplo #1 strrpos() e strripos() agora usam todo o texto como busca (needle)
<?php
var_dump(strrpos('ABCDEF','DEF')); //int(3)
var_dump(strrpos('ABCDEF','DAF')); //bool(false)
?>
Exemplo #2 Um objeto sem propriedades não será mais considerado "vazio"
<?php
class test { }
$t = new test();
var_dump(empty($t)); // echo bool(false)
if ($t) {
// Será executado
}
?>
Exemplo #3 Em alguns casos classes devem ser declaradas antes de serem usadas
<?php
//funciona sem erros:
$a = new a();
class a {
}
//lança um erro:
$a = new b();
interface c{
}
class b implements c {
}
?>