我创建了一个父类(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
'
答案 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
静态变量不共享相同的类/对象,因此如果修改该值,它将随处更改。