<?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
的{{1}}与$somevar
的{{1}}不同?
(我知道你可以在每个子类中手动编写Child2
,但这有点违反直觉..)
答案 0 :(得分:2)
如果您希望子类具有单独的类级别(静态)变量,则需要重新声明该变量。因此,在子类中需要protected static $somevar = false;
。
当我考虑其他语言的类结构时,要求它是非常直观的。