我有两节课。一个是父母,另一个是孩子。两者都有相同的名称方法。问题是不使用$ this-> methodName调用父方法。
家长班
class Parent
{
public function __construct()
{
$this->init();
}
// this function never get executed and why?
public function init()
{
//do something
}
}
儿童课
class Child extends Parent
{
public function __construct()
{
parent::__construct();
$this->init();
}
public function init()
{
// do something different
}
}
如何在不使用parent :: init的情况下调用父方法?
答案 0 :(得分:3)
您可以使用self
来引用当前的课程。与$this
相反,class ParentClass
{
public function __construct()
{
self::init();
}
public function init()
{
echo 'parent<br/>';
}
}
在运行时引用当前对象。
input:search
答案 1 :(得分:0)
<?php
public function __construct(){
parent::__construct();
self::init();
}
?>
另外在Parent类中也使用self来避免执行父init和子init。
答案 2 :(得分:0)
事情是parent::
是有原因的,其中一个原因是处理你所遇到的“问题”(这不是问题)。
显然,如果你有一个名为myfunction()
的函数的子类和一个名为myfunction()
的函数的父类,如果你在孩子中使用$this->myfunction()
,那么很明显会调用child的myfunction()
函数,因为$this
是对当前对象的引用。
使用parent
没有任何害处,这是有原因的。