Как называть супер в PHP? - программирование
Подтвердить что ты не робот

Как называть супер в PHP?

У меня есть classB, который продолжается classA. В classB я определяю метод fooBar(), который также определен в classA. В fooBar() из classB я хочу называть fooBar() of classA в начале. Так же, как я привык, от Objective-C. Возможно ли это в PHP? И если да, то как?

4b9b3361

Ответ 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
  }

}

Вы можете найти более мотивирующий пример здесь.