2013-12-16 51 views
3

我在第三方代码中看到一个变量声明为静态,但在任何类之外,只是在“正常”函数中。PHP:类之外的静态变量

<?php 
function doStuff(){ 
    static $something = null; 
} 
?> 

我从来没有见过static用这种方式,我无法找到任何东西的PHP文档。

这是合法的PHP代码吗?这与全局变量有效吗?如果不是,目的是什么?

回答

6

From the manual

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

<?php 
function test() 
{ 
    static $a = 0; 
    echo $a; 
    $a++; 
} 
?> 

,$一个只在功能和每一次 测试()函数被调用时都会输出$ a和 增加它的价值第一次调用初始化。

+0

@Fraser Nope。它只被初始化一次。 – deceze

+0

@Fraser我从PHP手册引用了我的整个答案。如果您不同意,请联系他们:)。 – kapa

+0

我会请downvoter陈述他的理由 - 我会很乐意提高我的答案。 – kapa