PHP:类外的静态变量

Maj*_*jiy 3 php static

我在第三方代码中看到了一个声明为static的变量,但在任何类之外,只是在"普通"函数中.

<?php
function doStuff(){
    static $something = null;
}
?>
Run Code Online (Sandbox Code Playgroud)

我从未见过static用这种方式,我在PHP文档中找不到任何东西.

这是合法的PHP代码吗?这实际上与全局变量相同吗?如果没有,目的是什么?

kap*_*apa 7

从手册:

变量范围的另一个重要特征是静态变量.静态变量仅存在于本地函数作用域中,但在程序执行离开此作用域时它不会丢失其值.

<?php
function test()
{
     static $a = 0;
     echo $a;
     $a++;
}
?>
Run Code Online (Sandbox Code Playgroud)

现在,$ a仅在第一次调用函数时被初始化,并且每次调用test()函数时,它将打印$ a的值并递增它.