我来自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中静态变量重置的潜在原因是什么?
答案 0 :(得分:0)
如果这是从HTTP请求运行,当用户更改页面或关闭并重新打开连接时,如果您的程序将导致一个全新的实例。如果是这种情况,您可能需要实施session variables。
您可能遇到此问题的另一种方法是分别引用类(对象)的类和实例,并获取不同的值。我不太确定PHP如何使用静态来专门处理此行为,但编写类似于this问题的测试可能会有用。