У меня есть 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
  }
}
Вы можете найти более мотивирующий пример здесь.