Как назвать супер в PHP? - PullRequest
       28

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

55 голосов
/ 25 декабря 2009

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

Ответы [ 2 ]

82 голосов
/ 25 декабря 2009
parent::fooBar();

Прямо из руководства :

Двойное двоеточие ... это токен, который позволяет получить доступ к ... переопределенным свойствам или методам класса.

...

Пример # 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();
?>
64 голосов
/ 09 сентября 2010

Просто небольшая заметка, потому что это не так просто для поиска в 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
  }

}

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...