php静态属性

nut*_*nut 14 php static class

我有两个代码片段(关于static关键字),我希望它们具有相同的输出,但实际上输出是不同的.

问题是为什么?

片段1

class base
{
    public static $var = 1;
}

class sub extends base
{
    public static $var = 2;
}

echo base::$var; // Outputs 1
Run Code Online (Sandbox Code Playgroud)

1

片段2

class base2
{
    public static $var2 = 1;
}

class sub2 extends base2
{
}

sub2::$var2 = 2;
echo base2::$var2; // Outputs 2
Run Code Online (Sandbox Code Playgroud)

2

Vin*_*ran 18

我想补充一点.

STATIC变量与类的任何特定实例/对象相关联.因此,您使用父类引用或子类引用修改变量,同一副本将被修改.

因此,除了将Public Static理解为Global之外,请理解它与任何特定实例无关,因此在更新静态变量的任何类层次结构引用中,相同的内存位置都会更新.

-

维诺德


Aka*_* KC 8

Public static variable行为像global变量.

作为public static variable全球范围内的谎言,您可以确保global variable在整个程序中可以看到任何更改.这个概念,您可以在示例程序中进行分析....

请查看静态变量继承.