如何在PHP中更改静态变量值?

时间:2012-02-29 10:11:37

标签: php static-variables

这是我想要完成的简化版本:

在我的脚本中,我希望每次执行脚本时都会更改true和false的变量。

<?php
    static $bool = true;

    // Print differente messages depending on $bool
    if( $bool == true )
        echo "It's true!";
    else
        echo "It's false!";

    // Change $bools value
    if( $bool == true )
        $bool = false
    else
        $bool = true;
?>

但显然我正在做的事情是错的。变量$bool经常是true,我还没有完全理解我认为的静态变量的概念。我做错了什么?

4 个答案:

答案 0 :(得分:15)

PHP无法在请求之间保留变量值。这意味着每次调用脚本时,$bool - 变量都将设置为true。如果要在请求之间保留值,则必须使用sessions,或者,如果希望在会话之间共享变量,则需要使用某些缓存机制,如APCMemcache

此外,PHP中使用static来声明在类级别共享的变量。因此,它在类中使用,并像self::$variableName;Foo::$variableName

一样访问

您可以阅读有关static properties here的更多信息。来自文档:

  

将类属性或方法声明为静态使它们可以访问,而无需实例化类。声明为static的属性无法使用实例化的类对象访问(尽管静态方法可以)。

另请注意,自PHP 5.3起,单词static已超载,并且还可以通过static:: <用于表示 Late Static Binding / p>

答案 1 :(得分:2)

静态值不会持续执行。 每次执行脚本时,都会初始化$ bool。 我认为你应该将这个值保存在文件中以保持简单。

答案 2 :(得分:2)

我认为你需要更好地理解静态变量的要点。变量的存储在调用堆栈上分配(和解除分配),因此从软件工程的角度来看,其值不能在运行时更改。

如上所述,有更好的解决方案。

答案 3 :(得分:0)

在php中使用static关键字很容易。这里我使用了静态变量和静态方法。试试吧。

<span class="badge badge-sm up bg-danger m-l-n-sm count" id="notcountbadge">
    {{(cfNotifications | async)?.length}}
</span>