PHP Manual
/
Desarrollador senior

Uso inadecuado del Recolector de Basura

11. 02. 2023

Usted es desarrollador de una gran aplicación heredada, en la que está introduciendo gradualmente PHPStan. Empiezas con el nivel 0, que es todo un reto, pero al final lo consigues. Pasas a los siguientes niveles, donde una parte de tu código empieza a informar de una variable $lock sin usar que deberías eliminar.

El código es el siguiente:

public function processOrder(int $orderId): void
{
$lock = Lock::createLock('pedido-' . $orderId);
// Hay algo de lógica aquí...
}

Te dices a ti mismo que debe haber un bloqueo almacenado en la variable que alguien se olvidó de liberar más tarde, o tal vez está sucediendo dentro de otros métodos que se llaman más tarde. Así que decides eliminar la variable no utilizada, manteniendo sólo la llamada al método estático que crea el bloqueo.

¿Podría esta decisión provocar un error crítico?

En caso afirmativo, ¿por qué y cómo podría haber funcionado el mecanismo original?

Si no es así, ¿por qué no, y cómo sabe que siempre es una operación segura?

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