Košík je prázdný

Vývoj jazyka PHP pokračuje a s každou novou verzí přicházejí změny, které zahrnují odstranění zastaralých funkcí a přidání nových možností. Přechod z PHP 7 na PHP 8 přinesl několik významných změn v dostupných funkcích. V tomto článku se podíváme na některé z funkcí, které byly v PHP 7, ale v PHP 8 už nejsou dostupné, a nabídneme možnosti, jak je nahradit.

1. Vytváření dynamických proměnných s $$

Původní přístup v PHP 7: V PHP 7 bylo běžné vytvářet dynamické proměnné pomocí dvojitých dolarů ($$). Tato technika umožňovala vytvoření proměnných s názvy definovanými v jiných proměnných.

$name = 'variable';
$$name = 'value';
echo $variable; // Vypíše 'value'

Nový přístup v PHP 8: V PHP 8 by měli vývojáři upřednostňovat explicitnější a bezpečnější způsoby práce s proměnnými, aby se vyhnuli potenciálním bezpečnostním rizikům a nejasnostem. Jednou z možností je použití polí nebo objektů pro dynamické ukládání hodnot.

$data = [];
$name = 'variable';
$data[$name] = 'value';
echo $data['variable']; // Vypíše 'value'

2. Funkce each()

Původní přístup v PHP 7: Funkce each() byla v PHP 7 často používána pro iteraci nad poli. Tato funkce vracela aktuální klíč a hodnotu a posunula ukazatel pole.

$array = ['a' => 1, 'b' => 2];
while (list($key, $value) = each($array)) {
    echo "$key => $value\n";
}

Nový přístup v PHP 8: Funkce each() byla v PHP 8 zastaralá a odstraněna. Nyní je doporučeno používat buď foreach, nebo kombinaci funkcí key(), current(), next() pro iteraci.

$array = ['a' => 1, 'b' => 2];
foreach ($array as $key => $value) {
    echo "$key => $value\n";
}

3. Funkce create_function()

Původní přístup v PHP 7: create_function() byla funkcí v PHP 7, která umožňovala vytvoření anonymní funkce z řetězce. Toto použití bylo často kritizováno pro potenciální bezpečnostní rizika.

$func = create_function('$a', 'return $a + 1;');
echo $func(1); // Vypíše 2

Nový přístup v PHP 8: V PHP 8 je doporučeno používat Closure nebo anonymní funkce, které jsou bezpečnější a čitelnější.

$func = fn($a) => $a + 1;
echo $func(1); // Vypíše 2

4. get_magic_quotes_gpc() a get_magic_quotes_runtime()

Původní přístup v PHP 7: Magic quotes byly mechanismus, který automaticky escapoval vstupní data. Funkce get_magic_quotes_gpc() a get_magic_quotes_runtime() sloužily k zjištění, zda jsou magic quotes aktivní.

if (get_magic_quotes_gpc()) {
    $data = stripslashes($data);
}

Nový přístup v PHP 8: Magic quotes byly zcela odstraněny z PHP. Nyní je vývojářům doporučeno sanitizovat a escapovat vstupní data explicitně pomocí funkcí jako htmlspecialchars() nebo filter_input().

$data = htmlspecialchars($data, ENT_QUOTES, 'UTF-8');

Tyto změny v PHP 8 vedou k bezpečnějšímu a přehlednějšímu kódu, ale vyžadují od vývojářů, aby se seznámili s novými postupy a aktualizovali starý kód podle nových standardů.