Solucionado (ver solução)
Solucionado
(ver solução)
1
resposta

Unset é igual à atribuir null à variável?

Olá,

Estou na parte que comenta sobre o garbage collector do curso de orientação a objetos com PHP. O instrutor utiliza o método unset para limpar a referência de uma variável para que a mesma seja "varrida" da memória pelo garbage collector:

$myVar = new MyClass();
unset($myVar);

Se por acaso for atribuído o valor de null à variável, o resultado é o mesmo que utilizar o unset? Exemplo:

$myVar = new MyClass();
$myVar = null;

Se o resultado for o mesmo, há alguma diferença no modo com que o serviço do PHP e/ou o garbage collector opera "por debaixo dos panos"?

Obrigado!

1 resposta
solução!

Opa, Leandro. Não, não são equivalentes. Ao fazer unset a variável deixa de existir na tabela interna de referências do PHP. Se você tentar acessar uma variável com valor null, vai conseguir. Se quiser verificar com is_null por exemplo, fazer comparações, etc, tudo funciona.

Agora se tentar acessar uma variável depois de chamar o unset, vai receber um Warning. Exemplo:

https://3v4l.org/4WumW

Quer mergulhar em tecnologia e aprendizagem?

Receba a newsletter que o nosso CEO escreve pessoalmente, com insights do mercado de trabalho, ciência e desenvolvimento de software