我创建了一个父类(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
静态变量不共享同一个类/对象,因此如果您修改值,它将在任何地方更改。