Try/Catch块中的PHP变量范围

DOO*_*iac 11 php scope exception-handling try-catch

在PHP中,变量范围规则如何应用于Try/Catch块?try当块完成时,块内声明的变量是否超出范围?或者它们是否在范围内直到函数/方法结束?

例如:

try
{
   // This may throw an exception when created!
   $o = new Pronk();
}
catch (Exception $ex)
{
   // Handle & exit somehow; not important here
   return false;
}

$o->doPronk();
Run Code Online (Sandbox Code Playgroud)

这有效吗?或者应该$o = NULL;在try/catch之前设置以保持$o范围?

(我知道示例代码确实有效,但是我也知道PHP在范围界定时可能会有点愚蠢.我的问题是,理想情况下,它应该如何工作?正确和正确的方法是什么?)

Bar*_*mar 12

您的代码有效.PHP中的变量范围是按功能而不是阻止.所以你可以在try块内部分配一个变量,并在外面访问它,只要它们在同一个函数中.