将修改后的父属性传递给子类

时间:2014-09-16 08:32:40

标签: php class inheritance properties

我创建了一个父类(A)并修改了它的一些公共属性和受保护属性。

我创建了一个扩展A的子类(B)。

我可以在创建它后看到B实例的父属性。

问题是:B的继承属性在修改之前具有默认值A.

我希望B保存继承属性的修改值。

如何?

class Dashboard {
   protected $testBusinessesIds = '';

   public function test_bids($a){
      $this->testBusinessesIds = $a;
   }

}

class DashboardDBHelper extends Dashboard{
   protected $withoutTestBids = '';

   public function __construct(){
    if($this->testBusinessesIds != '')
        $this->withoutTestBids = " AND B.`id`";
   }
}
$d = new Dashboard();
$d->test_bids(23);

$dh = new DashboardDBHelper();
print_r($dh->withoutTestBids);

我明白了:''而不是'AND B。id'

1 个答案:

答案 0 :(得分:1)

您可能需要将属性设置为静态。这是一个例子:

class A {
    protected $value = 1;
    protected static $staticValue = 1;

    public function printStatic() {
        self::$staticValue++;
        echo self::$staticValue;
    }

    public function printNonStatic() {
        $this->value++;
        echo $this->value;
    }
}

class B extends A {

    public function printStatic() {
        echo self::$staticValue;
    }

     public function printNonStatic() {
        echo $this->value;
    }
}

$a = new A();
$b = new B();

/* Class A */
$a->printStatic(); // 2
$a->printNonStatic(); // 2

/* Class B */
$b->printStatic(); // 2
$b->printNonStatic(); // 1

静态变量不共享相同的类/对象,因此如果修改该值,它将随处更改。