【发布时间】:2014-03-09 21:40:28
【问题描述】:
我来自 OO 背景,已经完成了为期 3 天的 PHP 速成课程,现在我尝试在一个相对较大的 PHP 项目中找到一些问题,而我遇到的问题似乎很奇怪(至少在其他 OO 语言中) )
所以我所拥有的是这样的:
class A
{
static $num = 0;
public static function instance($type, $options = array())
{
self::$num++;
// some more code here
}
}
在对该方法进行了几十次调用后,$num 值再次重置为 0,我想知道这怎么可能?我知道在 C# 等其他语言中,静态的生命周期就是应用程序的生命周期。那么 PHP 中静态变量重置的潜在原因是什么
【问题讨论】:
-
不可能。如果它改变了它的价值——那么有什么东西改变了它。先把它改成
private,看看有什么不同。 PS:使用静态不是“真的”OO,而只是使用类 -
您对“应用程序的生命周期”的评论可能是解开谜团的关键。你在什么环境下运行PHP?如果它是一个网络服务器,那么可能有多个应用程序实例,它们可能会在不同的时间(对你任意)重新启动。在网络服务器中配置 PHP 的一种常见方法是在一定次数的访问后重新启动脚本,这可能解释您所看到的行为。
-
@Peter Smartt:嗯,什么?如果你先试试呢?
-
您需要分享更多信息。通常使用 PHP(在大多数情况下),您的程序会为 每个请求 再次运行,所以生命周期很短 - 这可能是问题吗?