我需要在子类的函数内访问父元素的属性。可以使用parent::
访问静态变量,但是当子类具有相同名称的变量时,如何访问非静态父变量?
class My_parent{
$name = "Praeep";
}
class My_child extends My_parent {
$name ="Nadeesha";
function show_name() {
// need to access $name of the parent just referring the parent variable
}
}
答案 0 :(得分:0)
您可以使用protected
修饰符在父类中声明变量,也可以提供getter。优选使用getter方法来确保封装。
class My_parent{
private $name = "Praeep";
public function getName() {
return $this->name;
}
}
class My_child extends My_parent {
public function show_name() {
echo $this->getName();
}
}
如果您还希望该属性是可变的,请考虑提供一个setter。
答案 1 :(得分:-2)
向父类添加构造函数,并在此函数中定义变量。
class My_parent{
public $name;
public function __construct(){
$this->name= "Praeep";
}
}
如果您的子类也具有构造函数,则需要手动调用父构造函数。但是,类不必具有构造函数,因此为了简单起见,我将其注释掉了。
class My_child extends My_parent {
// public function __construct(){
// parent::__construct();
// }
public function show_name(){
echo $this->name;
}
}
$c=new My_child();
$c->show_name();
编辑:
实际上,你不需要父类中的构造函数。class My_parent{
public $name= "Praeep";
}
class My_child extends My_parent {
public function show_name(){
echo $this->name;
}
}
$c=new My_child();
$c->show_name();