используя $ this или parent :: для вызова унаследованных методов?

Не совсем проблема, больше похожа на любопытство с моей стороны, но в качестве примера, скажем, у меня есть класс php:

class baseTestMain { protected function testFunction() { echo 'baseTestMain says hi'; } } 

и другой класс, который простирается от этого класса выше:

 class aSubClass extends baseTestMain { public function doingSomething() { parent::testFunction(); //someextrastuffhere } } 

Обычно, когда я хочу вызвать родительский метод при определении нового метода в подклассе, я бы сделал parent::methodnamehere() но вместо parent:: вы также можете использовать $this->methodname() и операцию будет одинаковым.

 class aSubClass extends baseTestMain { public function doingSomething() { $this->testFunction(); //someextrastuffhere } } 

Так что я спрашиваю, должен ли я использовать parent::testFunction(); или используйте $this->testFunction(); ? или есть ли разница в том, что я пропустил? Если нет, то каковы ваши предпочтения или предпочтительный метод?

Обратите внимание, что я не переопределяю или не расширяю эту функцию в подклассе, по сути, реализация переносится из родителя.

В вашем случае, поскольку aSubClass::testFunction() наследуется от baseTestMain::testFunction() , используйте $this->testFunction() . Вы должны использовать parent::testFunction() если вы собираетесь переопределить этот метод в своем подклассе в рамках его реализации.

Разница в том, что parent:: вызывает реализацию родителя, в то время как $this-> вызывает реализацию ребенка, если у ребенка есть своя реализация, а не наследуется от родителя .

Вызов метода на родительском объекте препятствует тому, чтобы дети класса участвовали в полиморфизме должным образом, поскольку их переопределение метода никогда не будет вызвано.