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


pass modified parent properties to child class

我创建了一个父类(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"

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

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

静态变量不共享同一个类/对象,因此如果您修改值,它将在任何地方更改。