<?php
class a {
    public function foo() {
        echo __METHOD__ . PHP_EOL;
    }
}
class b extends a {
    public function foo() {
        $this->foo(); # I want to call a's foo method here.
        echo __METHOD__ . PHP_EOL;
    }
}
class c extends a {
    public function foo() {
        echo __METHOD__ . PHP_EOL;
        $this->foo(); # I want to call a's foo method here.
    }
}
class d extends a {
    # This class does not handle anything super special in our foo step, so I don't over write a's foo();
}
$a = new a; $a->foo();
$b = new b; $b->foo();
$c = new c; $c->foo();
$d = new d; $d->foo();
?>

我敢肯定有一些你抓你的头试图找出为什么我真的愿意做这样的事情,所以我向你保证,这将是有意义的,让我解释一下。

我有一个由它的自我只是罚款的功能,我有一些其他的类,在基类扩大到添加一些功能吧,这些类做同样的任务,但在不同的环境或与附加信息,以便他们必须做所有的父类的步骤,但他们也必须做一些特殊的子集是在某些情况下。

有没有办法我仍然可以执行的foo的方法和我的子类Foo中的方法?

我知道我可以做一些可怕的黑客像制作方法的文件,然后包括在两个父功能的文件解决这个问题,它的兄弟姐妹在需要的地方,我也可以做第二个方法叫做巴(),将包含FOO()的说明,并有我的子类覆盖FOO(),但调用bar()的时候,他们需要的foo()的功能。我只是想知道如果我能做到这一点,而无需使用一些非常有趣的黑客,是有什么事我不知道PHP,有人在这里可以教我吗?

有帮助吗?

解决方案

您可以尝试父:: foo的();

在c类:

public function bar(){
  return parent::foo();
}

请参阅例3中的PHP手册在范围解析

scroll top