我为PHP对象继承编写了这个小测试脚本:
<?php
class A {
protected $attr;
public function __construct($attr) {
$this->$attr = $attr;
}
public function getAttr() {
return $this->attr;
}
}
class B extends A {
}
$b = new B(5);
echo $b->getAttr();
这什么都没显示!
为什么不显示5
?
B类不应该像A级一样吗?
答案 0 :(得分:4)
错误在于:
$this->$attr = $attr;
您在此处指定$this->{5}
($attr
的值)。
写信,以解决该属性:
$this->attr = $attr;
// ^------ please note the removed `$` sign
要注意在这种情况下发生了什么,请尝试转储您的对象:var_dump($b);
答案 1 :(得分:2)