Nevhodné použití Garbage collectoru

11. 2. 2023

Jste vývojář velké legacy aplikace, do které postupně zavádíte PHPStan. Začnete levelem 0, který je poměrně náročný, ale nakonec to zvládnete. Přejdete na další levely, kde vám začne v jedné části kódu hlásit nepoužívanou proměnnou $lock, kterou byste měli odebrat.

Kód vypadá takto:

php
public function processOrder(int $orderId): void
{
$lock = Lock::createLock('order-' . $orderId);
// Tady je nějaká logika...
}

Říkáte si, že je v proměnné určitě uložený zámek, který někdo zapomněl později uvolnit, nebo se to možná děje uvnitř dalších metod, které se provolají později. Rozhodnete se proto nepoužívanou proměnnou odstranit, a zachováte jen volání statické metody, která vytváří zámek.

Může toto rozhodnutí způsobit kritickou chybu?

Pokud ano, proč, a jak mohl původní mechanismus fungovat?

Pokud ne, proč, a jak víte, že to je vždy bezpečná operace?

Jan Barášek
Jan BarášekVíce o autorovi

Autor článku pracuje jako seniorní vývojář a software architekt v Praze. Navrhuje a spravuje velké webové aplikace, které znáte a používáte. Od roku 2009 nabral bohaté zkušenosti, které tímto webem předává dál.

Rád vám pomůžu:

AI konzultace & implementace

Pomohu vám zavést AI do vašeho projektu – od analýzy a návrhu řešení až po nasazení do produkce. Ušetřete čas, zjednodušte procesy a získejte konkurenční výhodu.

Domluvit konzultaci
Konzultant: Jan Barášek
Potřebujete poradit s PHP?

Nabízím trénink vývojářů, konzultace, školení a analýzu návrhových vzorů. Osobně v Praze nebo online.

Napište mi

Newsletter

Nejlepsi tipy a triky o PHP do Vaseho e-mailu. Clanky a novinky nejen ze sveta PHP a programovani.