S uvedením nové verze PHP 8 došlo k významným změnám v jazyce, včetně odstranění některých zastaralých funkcí. Tento článek poskytuje přehled těchto odstraněných funkcí a nabízí doporučení, jak je nahradit modernějšími a bezpečnějšími alternativami. Tento přechod je klíčový pro zajištění bezpečnosti, výkonu a kompatibility vašich aplikací s nejnovější verzí PHP.
Odstraněné funkce a jejich náhrady
- get_magic_quotes_gpc() a get_magic_quotes_runtime()
Původní funkce: Tyto funkce byly navrženy pro automatické escapování (escapování = přidání zpětných lomítek) uživatelských vstupů a byly již dlouho zastaralé kvůli bezpečnostním rizikům, která přinášely.
Náhrada: V PHP 8 byly tyto funkce odstraněny. Doporučuje se používat funkce jako addslashes()
nebo mysqli_real_escape_string()
pro manuální escapování vstupů, nebo ještě lépe, využívat prepared statements pro databázové dotazy, které automaticky zabezpečí vstupy.
Původní funkce: create_function()
sloužila k vytváření anonymních funkcí (lambda funkcí) v dobách, kdy PHP ještě nepodporovalo anonymní funkce nativně.
Náhrada: PHP nyní plně podporuje anonymní funkce pomocí Closure, takže namísto create_function()
byste měli používat standardní syntax pro anonymní funkce, což zlepšuje čitelnost kódu a bezpečnost.
// Starý způsob
$func = create_function('$a', 'return $a + 10;');
// Nový způsob
$func = function($a) { return $a + 10; };
Původní funkce: Funkce each()
byla používána pro iteraci pole, ale byla neefektivní a její použití bylo považováno za zastaralé.
Náhrada: Použijte moderní foreach cyklus pro iteraci polí, který je efektivnější a lépe čitelný.
// Starý způsob
while (list($key, $value) = each($arr)) {
// kód
}
// Nový způsob
foreach ($arr as $key => $value) {
// kód
}
- The ereg extension (ereg(), eregi(), ereg_replace(), atd.)
Původní funkce: Tato rozšíření byla určena pro práci s regulárními výrazy, ale nebyla kompatibilní s PCRE (Perl Compatible Regular Expressions), které se stalo standardem.
Náhrada: Použijte preg_*
funkce, které jsou kompatibilní s PCRE a nabízejí lepší výkon a flexibilitu.
// Starý způsob
$found = ereg('pattern', $string);
// Nový způsob
$found = preg_match('/pattern/', $string);
Odstranění zastaralých funkcí v PHP 8 přináší výzvy pro vývojáře při aktualizaci staršího kódu, ale současně nabízí příležitost pro vylepšení a modernizaci aplikací. Je důležité seznámit se s těmito změnami a přijmout doporučené náhrady pro zajištění kompatibility a využívání nejlepších praktik v nových verzích PHP.