<?php
abstract class A {
public static $var = "A";
public function setVar() {
}
public function test() {
$this->setVar();
echo static::$var;
}
public function returnVar() {
return static::$var;
}
}
class B extends A {
public function setVar() {
static::$var = 'B';
}
}
class C extends A {
public function setVar() {
static::$var = 'C';
}
}
$class = new B();
$class->test();
$class2 = new C();
$class2->test();
echo "</br>";
echo $class->returnVar();
echo $class2->returnVar();
?>
我试图做的是将变量$ var static赋予扩展抽象类A的类,而不必在其他地方重新声明它。
所以说也许我从B类创建多个扩展A的对象,我希望B类生成的所有对象共享相同的$ var值。
假设我然后根据类C创建对象,它们应该共享$ var ...
的相同值这是我目前得到的结果:
BC
CC
然而,我正在寻找的是:
BC
BC
由于
答案 0 :(得分:2)
尝试这样:
#setting
public function setVar() {
static::$var[get_class($this)] = 'B';
}
#getting in abstract
public function returnVar() {
return static::$var[get_class($this)];
}
#add this in the abstract class
public function setVar();