Cod*_*eat 15 php scope class function
我想知道为什么php在函数内部声明函数时以不同方式处理函数内声明函数的范围.
例如:
function test() // global function
{
function myTest() // global function. Why?
{
print( "Hello world" );
}
}
class CMyTestClass
{
public function test() // method of CMyTestClass
{
function myTest() // This declaration will be global! Why?
{
print( "Hello world" );
}
}
}
}
Run Code Online (Sandbox Code Playgroud)
任何人都可以向我解释为什么会这样吗?谢谢您的回答.
格尔茨.
当您在另一个函数中定义一个函数时,该函数在执行父函数之前并不存在。执行父函数后,就会定义嵌套函数,并且与任何函数一样,可以从当前文档中的任何位置访问。如果代码中有嵌套函数,则只能执行外部函数一次。重复调用将尝试重新声明内部函数,这将产生错误。
现在所有 php 函数默认都是全局的。因此,当您调用外部函数时,您的嵌套函数将成为全局函数