这是我想要完成的简化版本:
在我的脚本中,我希望每次执行脚本时都会更改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
,我还没有完全理解我认为的静态变量的概念。我做错了什么?
答案 0 :(得分:15)
PHP无法在请求之间保留变量值。这意味着每次调用脚本时,$bool
- 变量都将设置为true。如果要在请求之间保留值,则必须使用sessions
,或者,如果希望在会话之间共享变量,则需要使用某些缓存机制,如APC
或Memcache
。
此外,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>