Ondanks de meeste bestaande PHP 4 code zou moeten werken zonder veranderingen, kan je best aandacht besteden aan volgende terugwaardse incompatibiliteit veranderingen:
strrpos() en strripos() gebruiken nu de hele string als een needle.
Illegaal gebruik van deze string offsets veroorzaakt E_ERROR in de plaats van E_WARNING.
array_merge() is veranderd om enkel arrays te aanvaarden. Als een niet-array variable wordt gepassed, zal een E_WARNING geworpen worden voor elk zo'n parameter. Wees voorzichtig omdat je code E_WARNING kan geven uit het niets.
PATH_TRANSLATED server variabele wordt niet langer uitdrukkelijk geset onder Apache2 SAPI in kontrast met de situatie in PHP 4, waar het is geset naar dezelfde waarde als de SCRIPT_FILENAME server variable wanneer het niet populated wordt door Apache. Deze verandering is doorgevoerd om to overeen te stemmen met de CGI specificatie. Refereer a.u.b naar bug #23610 voor meer informatie.
De T_ML_CONSTANT constant is niet langer gedefinieerd door de Tokenizer extensie. Als error_reporting is geset op E_ALL, zal PHP een notice genereren. Hoewel de T_ML_CONSTANT nooit werd gebruikt, was het gedefinieerd in PHP 4. In zowel PHP 4 en PHP 5 worden // en /* */ omgezet als de T_COMMENT constant. Niettemin PHPDoc stijl comments /** */ , die vanaf PHP 5 worden geparsed door PHP, herkend worden als T_DOC_COMMENT.
$_SERVER zou nooit bezaaid mogen worden met argc en argv als variables_order "S" bezit. Als je een systeem hebt dat specifiek geconfigureerd is om geen $_SERVER te maken, dan moet het er uiteraard niet zijn. De verandering was om argc en argv altijd beschikbaar te maken in de CLI versie onafhankelijk van de variables_order setting. Gelijkaardig, zal de CLI versie nu altijd bezaaid worden met de globale $argc en $argv variabelen.
Een object met geen properties wordt niet langer beschouwd als "empty".
Classes moeten gedeclareerd worden voor gebruik.
Voorbeeld D-1. strrpos() en strripos() gebruiken nu de gehele string als naald.
|
Het volgende voorbeeld was geldig in PHP 4, maar in PHP 5 zal het een fatal error produceren.