如果我有一个包含静态var的基类,则我设置了这个静态var,然后有一个扩展基类的类,扩展类将保留我已经设置的静态变量的值基类?

有帮助吗?

解决方案

Yes, although they're different variables, the static variables in both classes are in the same reference set.

You can break this reference set though, by using reference assignment (=&) or by redeclaring it in the extended class:

class base {
    public static $var;
}
class extended extends base {}

extended::$var = 8; // base::$var == 8
$t = 6;
extended::$var =& $t; // base::$var == 8; extended::$var == 6

class base {
    public static $var;
}
class extended extends base {
    public static $var;
}

extended::$var = 8; // base::$var == null; extended::$var == 8
许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top