如何在PHP中调用超级?

2022-08-30 08:26:43

我有一个扩展.classBclassA

在这两个和我定义方法.classAclassBfooBar()

在我想在开始时调用。fooBar()classBfooBar()classA

就像我习惯的方式,来自Objective-C。这在PHP中可能吗?如果是这样,如何?


答案 1
parent::fooBar();

直接来自手册

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

...

示例 #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();
?>

答案 2

只是一个快速说明,因为这在Google搜索上并不容易,如果你能找到它,这在php文档中有很好的记录。如果您有一个子类需要调用超类的构造函数,则可以通过以下方式调用它:

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
  }

}

你可以在这里找到一个更激励人心的例子。


推荐