У меня есть classB
, который продолжается classA
. В classB
я определяю метод fooBar()
, который также определен в classA
. В fooBar()
из classB
я хочу называть fooBar()
of classA
в начале. Так же, как я привык, от Objective-C. Возможно ли это в PHP? И если да, то как?
Как называть супер в PHP?
Ответ 1
parent::fooBar();
Прямо от manual:
... double colon, является токеном, который позволяет получить доступ к... переопределенным свойствам или методам класса.
...
Пример # 3 Вызов родительского метода
<?php class MyClass { protected function myFunc() { echo "MyClass::myFunc()\n"; } } class OtherClass extends MyClass { // Override parent definition public function myFunc() { // But still call the parent function parent::myFunc(); echo "OtherClass::myFunc()\n"; } } $class = new OtherClass(); $class->myFunc(); ?>
Ответ 2
Просто быстро, потому что это не так просто в поиске Google, и это хорошо документировано в php docs если вы можете найти его. Если у вас есть подкласс, которому необходимо вызвать конструктор суперкласса, вы можете вызвать его с помощью:
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
}
}
Вы можете найти более мотивирующий пример здесь.