<?php
class Base{
protected static $somevar = false;
public static function changeSomeVar(){
static::$somevar = true;
}
public static function checkVar(){
var_dump(static::$somevar);
}
}
class Child1 extends Base{
public static function setup(){
static::changeSomeVar();
}
}
class Child2 extends Base{
}
Child1::setup();
Child1::checkVar(); // true
Child2::checkVar(); // still true
?>
是否有办法使Child1
的$somevar
与Child2
的$somevar
不同?
(我知道您可以在每个子类中手动编写protected static $somevar = false;
,但这有点反直觉…)
如果您希望子类具有单独的类级别(静态)变量,则需要重新声明该变量。所以在子类中需要protected static $somevar = false;
。
当我想到其他语言中的类结构时,我很直观地要求它