PHP Manuál | ||
---|---|---|
Predchádzajúci | Dodatok B. Migrácia z PHP 4 na PHP 5 | Nasledujúci |
I keď vačšina existujúceho PHP 4 kódu by mala fungovať bez zmien, mali by ste dať pozor na následujúce spätne nekompatibilné zmeny:
strrpos() a strripos() teraz využívajú celý reťazec ako ihlu.
Nelegálne použitie offsetov reťazca spôsobuje E_ERROR namiesto E_WARNING.
array_merge() bola zmenená, aby prijímala iba polia. Ak sa pošle premenná, ktorá nie je pole, vyhodí sa E_WARNING pre každý taký parameter. Buďte opatrný, pretože váš kód môže začať emitovať E_WARNING z ničoho nič.
Premenná servera PATH_TRANSLATED už viac nie je nastavená implicitne pod Apache2 SAPI ako kontrast k situácii v PHP 4, kde je nastavená na rovnakú hodnotu ako premenná servera SCRIPT_FILENAME, kde nie je obývaná Apache-om. Táto zmena bola urobená, aby vyhovovala CGI špecifikácii. Prosím, pozrite si bug #23610 pre viac informácii.
Konštanta T_ML_CONSTANT už nie je definovaná rozšírením Tokenizer. Ak je error_reporting nastavený na E_ALL, PHP vygeneruje hlášku. I keď T_ML_CONSTANT sa nikdy vôbec nepožila, bola definovaná v PHP 4. V oboch PHP 4 a PHP 5 // a /* */ sa chápu ako konštanta T_COMMENT. Avšak PHPDoc štýlové komentáre /** */ , ktoré začínajú PHP 5 sú analyzované PHP, sa rozpoznávajú ako T_DOC_COMMENT.
$_SERVER by mala byť obývaná s argc a argv ak variables_order zahŕňa "S". Ak ste špecificky konfigurovali váš system, aby nevytváral $_SERVER, potom samozrejme by tam nemala byť. Zmenou bolo vždy urobiť argc a argv dostupné v CLI verzii bez ohľadu na nastavenie variables_order. CLI verzia bude teraz vždy obývať globálne premenné $argc a $argv.
Objekt so žiadnymi vlastnosťami sa už viac nepovažuje za "empty".
V niektorých prípadoch triedy musia byť deklarované pred použitím. Stane sa tak iba ak sa použije niektorá z nových vlastností PHP 5. Inak je správanie staré.
get_class() počínajúc PHP 5 vracia názov triedy ako bola deklarovaná, čo môže viesť k problémom v starších skriptoch, ktoré sa spoliehajú na predošlé správanie (názov triedy je lowercase). Možné riešenie je vyhľadať get_class() vo vašich skriptoch a použiť strtolower().
ip2long() teraz vracia FALSE, keď sa pošle neplatná IP adresa ako argument funkcii a už nie -1.
Príklad B-1. strrpos() a strripos() teraz používa celý reťazec ako ihlu
|
Predchádzajúci | Domov | Nasledujúci |
Migrácia z PHP 4 na PHP 5 | Hore | CLI a CGI |