【发布时间】:2009-12-25 20:42:55
【问题描述】:
我有一个classB,它扩展了classA。
在classA 和 classB 中我都定义了fooBar() 方法。
在fooBar() 的classB 中,我想一开始就打电话给classA 的fooBar()。
就像我习惯的那样,来自 Objective-C。这在PHP中可能吗?如果有,怎么做?
【问题讨论】:
我有一个classB,它扩展了classA。
在classA 和 classB 中我都定义了fooBar() 方法。
在fooBar() 的classB 中,我想一开始就打电话给classA 的fooBar()。
就像我习惯的那样,来自 Objective-C。这在PHP中可能吗?如果有,怎么做?
【问题讨论】:
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(); ?>
【讨论】:
只是一个简短的说明,因为这在 Google 搜索中并不容易出现,这在 php 文档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。
【讨论】: