如何在PHP中调用super?

时间:2009-12-25 20:42:56

标签: php oop

我的classB扩展了classA。在classB中,我定义了一个方法fooBar(),该方法也在classA中定义。在fooBar()的{​​{1}}中,我想在开始时致电classB fooBar()。就像我习惯的那样,来自Objective-C。这可能在PHP?如果是这样,怎么样?

2 个答案:

答案 0 :(得分:82)

parent::fooBar();

直接来自manual

  

...双冒号,是一个允许访问...覆盖属性或类方法的标记。

     

...

     

示例#3调用父方法

<?php
class MyClass
{
    protected function myFunc() {
        echo "MyClass::myFunc()\n";
    }
}

class OtherClass extends MyClass
{
    // Override parent's definition
    public function myFunc()
    {
        // But still call the parent function
        parent::myFunc();
        echo "OtherClass::myFunc()\n";
    }
}

$class = new OtherClass();
$class->myFunc();
?>

答案 1 :(得分:64)

只是一个简单的说明,因为这在谷歌搜索中并不容易,这在php docs if you can find it中有详细记载。如果你有一个需要调用超类构造函数的子类,你可以用:

来调用它
parent::__construct(); // since PHP5

一个例子是如果超类在它的构造函数中有一些参数,那么实现类需要调用它:

class Foo {

  public function __construct($lol, $cat) {
    // Do stuff specific for Foo
  }

}

class Bar extends Foo {

  public function __construct()(
    parent::__construct("lol", "cat");
    // Do stuff specific for Bar
  }

}

您可以找到更具激励性的示例here