Forum und email

Používanie starého kódu s novými verziami PHP

Teraz, keď PHP vyrástlo na populárny skriptovací jazyk, vzniklo mnoho verejných prameňom a knižníc obsahujúcich kód, ktorý môžete znovu použiť. PHP vývojári sa čo najviac pokúsili zachovať spätnú kompatibilitu, takže skript napísaný pre staršiu verziu bude bežať (ideálne) bez zmien v novšej verzii PHP. V praxi to znamená, že nejaké zmeny budú zvyčajne potrebné.

Dve z najdôležitejších nedávnych zmien, ktoré ovplyvňujú starý kód sú:

  • Odmietanie starých $HTTP_*_VARS polí (ktoré sa musia indikovať ako globálne pri použití vo vnútri funkcie alebo metódy). Následujúce autoglobálne polia boli predstavené v PHP » 4.1.0. Sú to: $_GET, $_POST, $_COOKIE, $_SERVER, $_FILES, $_ENV, $_REQUEST a $_SESSION. Staršie $HTTP_*_VARS polia, ako $HTTP_POST_VARS, stále existujú od ich predstavenia v PHP 3. Počínajúc PHP 5.0.0, dlhé PHP polia preddefinovaných premenných je možné zakázať s direktívou register_long_arrays.
  • Externé premenné už viac nie sú registrované v globálnom hľadisku ako východzie. Inými slovami, počiatkom PHP » 4.2.0 je PHP direktíva register_globals štandardne off v php.ini. Preferovaná metóda pristupovania k týmto hodnotám je cez autoglobálne polia spomenuté. vyššie. Staršie skripty, knihy a tutoriály sa môžu spoliehať na to, že je táto direktíva zapnutá. Ak by bola zapnutá, napríklad, dala by sa použiť $id z URL https://www.example.com/foo.php?id=42. Či už zapnutá alebo vypnutá, $_GET['id'] je dostupná.
Pre viac detailov o týchto zmenách, pozri sekciu o preddefinovaných premenných a tam uvedené odkazy.