php static 变量用法

有时候我们可能需要重复调用一个函数,里面有些变量不需要重复初始化、初始化成本比较高的,我们可以使用 static 关键字修饰,在该变量没有初始化的时候才进行初始化,初始化过的变量就不再初始化。如:

function test()
{
    echo __FUNCTION__ . "\n";
    return mt_rand(10, 20);
}

function call()
{
    static $test;
    if (is_null($test)) {
        $test = test();
    }
    
    echo $test . "\n";
}

call();
call();
call();

上面会输出:

test
13
13
13

  

有哪些场景会用到呢?比如,可能这个初始化的变量来自于数据库查询,而这个查询结果不会在本次请求中发生变化的。也许大家想到的一个方法是,在该方法外部进行初始化,然后把初始化之后的变量作为参数传递进去,但是这样一来会多了个不必要的参数(当然,如果该次初始化需要外部条件另说),而且,本来出现在该函数内部的逻辑放在了函数外部,这样一来,如果其他地方也要调用该方法,那么也要进行一次重复的初始化操作,代码就会有冗余。

猜你喜欢

转载自www.cnblogs.com/eleven24/p/8993540.html