Cu toate că majoritatea codului-sursă existent în PHP 4 ar trebui să funcționeze fără schimbări, totuși ar trebui să atrageți atenția la următoarele schimbări incompatibile în sens invers:
E_ERROR
în loc de E_WARNING
. Un exemplu de utilizare nelegală ar fi:
$str = 'abc'; unset($str[0]);.
E_WARNING
va fi aruncat pentru fiecare astfel de parametru.
Fiți atent, deoarece codul dumneavoastră poate să înceapă să emită
E_WARNING
din senin.
PATH_TRANSLATED
nu mai este
stabilită implicit sub Apache2 SAPI în contrast cu situația în PHP 4, unde
ea este stabilită la aceeași valoare ca și variabila de server
SCRIPT_FILENAME
, atunci când nu este populată de
Apache. Această schimbare a fost făcută pentru a ne conforma cu
» specificația CGI/1.1. Vă rugăm să vă
referiți la » bug #23610
pentru informații suplimentare și vedeți de asemenea descrierea
$_SERVER['PATH_TRANSLATED'] în manual. Această problemă
de asemenea afectează versiunile PHP >= 4.3.2.
T_ML_COMMENT
nu mai este definită de către
extensia Tokenizer. Dacă error_reporting
este stabilită la E_ALL
, PHP va genera o notificare. Cu
toate că T_ML_COMMENT
niciodată nu a fost utilizată, ea
a fost definită în PHP 4. În ambele PHP 4 și PHP 5 // și /* */ sunt soluționate
ca constante T_COMMENT
. Însă comentariile în stil PHPDoc
/** */, care începând cu PHP 5 sunt înțelese de PHP, sunt recunoscute ca
T_DOC_COMMENT
.
__CLASS__
, __METHOD__
și
__FUNCTION__
. Valorile sunt întoarse exact cum sunt declarate
(respectându-se literele majuscule/minuscule).
FALSE
când o adresă IP nevalidă îi este
transmisă ca argument și nu -1 ca înainte.
Example #1 strrpos() și strripos() acum utilizează întregul string în calitate de 'ac'
<?php
var_dump(strrpos('ABCDEF','DEF')); //int(3)
var_dump(strrpos('ABCDEF','DAF')); //bool(false)
?>
Example #2 Un obiect fără proprietăți nu mai este considerat "vid"
<?php
class test { }
$t = new test();
var_dump(empty($t)); // echo bool(false)
if ($t) {
// Va fi executat
}
?>
Example #3 În unele cazuri clasele trebuie declarate înainte de a fi utilizate
<?php
// funcționează fără erori:
$a = new a();
class a {
}
// aruncă o eroare:
$a = new b();
interface c{
}
class b implements c {
}
?>