Php 为什么下面的代码输出2而不是1?
我最近在一次采访中偶然发现了这个问题。我不知道正确的答案。我不明白为什么PHP输出2而不是1Php 为什么下面的代码输出2而不是1?,php,Php,我最近在一次采访中偶然发现了这个问题。我不知道正确的答案。我不明白为什么PHP输出2而不是1 class a { public static $myvar; function __construct($x = 1) { self::$myvar = $x; } } class b extends a { public static $myvar; function __construct($x = 2) {
class a
{
public static $myvar;
function __construct($x = 1)
{
self::$myvar = $x;
}
}
class b extends a
{
public static $myvar;
function __construct($x = 2)
{
self::$myvar = $x;
parent::__construct();
}
}
$obj = new b();
echo $obj::$myvar;
公共静态$myvar
在每个类中声明。这就是为什么A::myvar
与B::myvar
不同的原因。我不明白。如果I var_在'a'构造函数中转储$x,它将输出2…不,它不会;不过我得到了你大部分的答案。您指的是后期静态绑定。为什么在这两个类中都声明public static$myvar
?仅在父类中声明,它也将在子类中可用。public static$myvar
在每个类中声明。这就是为什么A::myvar
与B::myvar
不同的原因。我不明白。如果I var_在'a'构造函数中转储$x,它将输出2…不,它不会;不过我得到了你大部分的答案。您指的是后期静态绑定。为什么在这两个类中都声明public static$myvar
?仅在父类中声明,它也将在子类中可用。