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

Web*_*urk 8 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;
?>
Run Code Online (Sandbox Code Playgroud)

但显然我正在做的事情是错的.变量$bool是不断的true,我还没有完全掌握我认为的静态变量的概念.我究竟做错了什么?

Pat*_*and 16

PHP无法在请求之间保留变量值.这意味着每次调用脚本时,$bool-variable都将设置为true.如果你想保持你必须使用的请求之间的值,sessions或者如果你想在会话之间共享变量,那么一些缓存机制就像APCMemcache.

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

你可以阅读更多关于静态属性在这里.来自文档:

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

此外,请注意,static自PHP 5.3以来,该单词已经过载,并且还可以用于表示Late Static Binding,使用static::

  • 静态可用于声明类变量或在函数内声明一个持久于函数调用的变量,但不能过度执行脚本. (4认同)