PHP Manual
/

Nevhodné použití Garbage collectoru

2023-02-11T13:35:00.000Z

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.
2025