如何在 PHP 上的 class 继承中仅创建父方法 运行?
How can I make only the parent method run in a class inheritance on PHP?
我对这个例子有一些疑问,我做了这个简单的代码,只有两个 classses,父子 class。我执行子的时候一定要执行父,父方法可以自己执行,但是程序不能执行子方法。
当我运行这个程序时,父子都执行。有什么可以防止这种情况只执行父亲的方法吗?
class Father{
private $element = 0; //Just to prevent recursivity
public function add($a = null){
if ($this->element == 0) {
echo "<br>I'm the father"; //Execution of fhter
$this->element = 1;
$this->add('<br> I was an accidente'); //This instruccion call both methods, parent and soon
}else{
echo "<br>But not anymore";
}
}
}
class Son extends Father{
public function add($a = null){
parent::add();
echo "<br>I'm the son";
if ($a != null) {
echo $a;
}
}
}
$son = new Son();
$son->add();
我得到了这些结果
I'm the father
But not anymore
I'm the son
I was an accident
I'm the son
如您所见,当我在父级上执行 $this->add() 方法时,它们执行两种方法(添加父子)。
有什么方法可以执行这段代码,以便在对父亲执行 $this->add() 时,它不会同时执行(父亲和儿子)?
换句话说,我期待下一个结果
I'm the father
But not anymore
I'm the son
I was an accident
顺便说一句:我无法修改父 class。
谢谢
您只需将 $element
添加回 Son
class 并像在 Father
class 中那样使用它:
class Son extends Father
{
# Add this item back
private $element = 1;
public function add($a = null)
{
parent::add();
# Check if it's set
if($this->element == 1) {
# Echo
echo "<br>I'm the son";
# Set to 0 so it doesn't recurse
$this->element = 0;
}
if ($a != null) {
echo $a;
}
}
}
我对这个例子有一些疑问,我做了这个简单的代码,只有两个 classses,父子 class。我执行子的时候一定要执行父,父方法可以自己执行,但是程序不能执行子方法。
当我运行这个程序时,父子都执行。有什么可以防止这种情况只执行父亲的方法吗?
class Father{
private $element = 0; //Just to prevent recursivity
public function add($a = null){
if ($this->element == 0) {
echo "<br>I'm the father"; //Execution of fhter
$this->element = 1;
$this->add('<br> I was an accidente'); //This instruccion call both methods, parent and soon
}else{
echo "<br>But not anymore";
}
}
}
class Son extends Father{
public function add($a = null){
parent::add();
echo "<br>I'm the son";
if ($a != null) {
echo $a;
}
}
}
$son = new Son();
$son->add();
我得到了这些结果
I'm the father
But not anymore
I'm the son
I was an accident
I'm the son
如您所见,当我在父级上执行 $this->add() 方法时,它们执行两种方法(添加父子)。
有什么方法可以执行这段代码,以便在对父亲执行 $this->add() 时,它不会同时执行(父亲和儿子)?
换句话说,我期待下一个结果
I'm the father
But not anymore
I'm the son
I was an accident
顺便说一句:我无法修改父 class。 谢谢
您只需将 $element
添加回 Son
class 并像在 Father
class 中那样使用它:
class Son extends Father
{
# Add this item back
private $element = 1;
public function add($a = null)
{
parent::add();
# Check if it's set
if($this->element == 1) {
# Echo
echo "<br>I'm the son";
# Set to 0 so it doesn't recurse
$this->element = 0;
}
if ($a != null) {
echo $a;
}
}
}