如何在PHP中调用super?

ope*_*rog 60 php oop

我有一个classB延伸classA.在classB我定义一个fooBar()也在其中定义的方法classA.在fooBar()classB我想调用fooBar()classA开头.就像我习惯的那样,来自Objective-C.这可能在PHP?如果是这样,怎么样?

jus*_*ody 87

parent::fooBar();
Run Code Online (Sandbox Code Playgroud)

直接从手册:

...冒号是一个令牌,允许访问...重写的属性或类的方法.

...

示例#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();
?>
Run Code Online (Sandbox Code Playgroud)


Spo*_*ike 66

只是一个快速说明,因为这在谷歌搜索中并不容易,如果你能找到它,这在PHP文档中有很好的记录.如果你有一个需要调用超类的构造函数的子类,你可以用以下方法调用它:

parent::__construct(); // since PHP5
Run Code Online (Sandbox Code Playgroud)

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

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
  }

}
Run Code Online (Sandbox Code Playgroud)

你可以在这里找到一个更具激励性的例子.