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 {
}
?>