Php 后期绑定的闭包变量即使在父范围中未设置时也可用

Php 后期绑定的闭包变量即使在父范围中未设置时也可用,php,closures,Php,Closures,我一直在努力理解闭包。我知道我可以使用引用对闭包变量进行后期绑定。它似乎起作用了。但是,当我在父范围中取消设置变量时,不知何故,该变量仍然可用,并且数据也完好无损 echo 'Start<br/>'; $name = 'Sheikh'; register_shutdown_function(function() use(&$name){ echo 'Start RSF<br/>'; echo 'Name is ' . $name.'<br/&

我一直在努力理解闭包。我知道我可以使用引用对闭包变量进行后期绑定。它似乎起作用了。但是,当我在父范围中取消设置变量时,不知何故,该变量仍然可用,并且数据也完好无损

echo 'Start<br/>';
$name = 'Sheikh';
register_shutdown_function(function() use(&$name){
    echo 'Start RSF<br/>';
    echo 'Name is ' . $name.'<br/>';
    echo 'End RSF<br/>';
});
$name = 'Azad';
unset($name);
var_dump($name);
echo '<br/>';
echo 'End<br/>';
我不希望name变量被打印出来。 如果我做了$name=NULL;在父范围内,我得到了我所期望的。 unset()实际上不是取消变量的设置吗?有人能解释一下这里发生了什么吗

Start
NULL
End
Start RSF
Name is Azad
End RSF