PHP Manual
/
Senior Developer

Niewłaściwe użycie Garbage Collector

11. 02. 2023

Jesteś deweloperem dużej aplikacji legacy, do której stopniowo wprowadzasz PHPStan. Zaczynasz od poziomu 0, który jest dość wymagający, ale w końcu udaje ci się go opanować. Przechodzisz do kolejnych poziomów, gdzie jedna część twojego kodu zaczyna zgłaszać nieużywaną zmienną $lock, którą powinieneś usunąć.

Kod wygląda tak:

public function processOrder(int $orderId): void
{
$lock = Lock::createLock('zamówienie -' . $orderId);
// Jest tu jakaś logika...
}

Mówisz sobie, że musi istnieć blokada przechowywana w zmiennej, którą ktoś zapomniał zwolnić później, a może dzieje się to wewnątrz innych metod, które są wywoływane później. Więc decydujesz się usunąć nieużywaną zmienną, zachowując tylko wywołanie do statycznej metody, która tworzy zamek.

Czy ta decyzja może spowodować błąd krytyczny?

Jeśli tak, to dlaczego i jak mógł działać pierwotny mechanizm?

Jeśli nie, to dlaczego nie i skąd wiadomo, że jest to zawsze bezpieczne działanie?

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.
Status:
All systems normal.
2024