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