【问题标题】:How to make an abstract variable static to a sub class如何使抽象变量静态到子类
【发布时间】:2016-07-28 13:51:04
【问题描述】:
<?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 静态到扩展抽象类 A 的类,而不必在其他地方重新声明它。

假设我从类 B 创建了多个扩展 A 的对象,我希望从类 B 生成的所有对象共享相同的 $var 值。

假设我基于 C 类创建对象,它们应该共享相同的 $var 值...

这是我目前得到的结果:

BC
CC

但是,我正在寻找的是:

BC
BC

谢谢

【问题讨论】:

    标签: php class inheritance


    【解决方案1】:

    这样试试:

      #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();
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2011-08-05
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-12-04
      • 2012-01-02
      • 2011-07-27
      相关资源
      最近更新 更多