PHP Manual
/
Senior vývojář

Nevhodné použití Garbage collectoru

11. 02. 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:

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   Ví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:

Související články

1.
8.

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, pokud si nevíte rady.

Lektor: Jan Barášek

Status:
All systems normal.
2024