наследование — видимость в PHP? контекст `$ this` при наследовании?

Я новичок в php, и я просматривал документацию для наглядности. Я немного запутался с этим примером в документации.
когда звонок $myFoo->test() сделано, не должен ли он позвонить Foos $this->testPrivate(); , Я имею в виду не должен $this быть FooОбъект, а не Bar объект? , Насколько я знаю (я могу ошибаться здесь) Foo будет иметь своего рода test() метод, который унаследован от Bar и звонит $myFoo->test() вызовет $ this-> testPrivate, где $this должно быть Fooобъект myFoo, так как это зовет Bar«s testPrivate метод?

class Bar
{
public function test() {
$this->testPrivate();
$this->testPublic();
}

public function testPublic() {
echo "Bar::testPublic\n";
}

private function testPrivate() {
echo "Bar::testPrivate\n";
}
}

class Foo extends Bar
{
public function testPublic() {
echo "Foo::testPublic\n";
}

private function testPrivate() {
echo "Foo::testPrivate\n";
}
}

$myFoo = new foo();
$myFoo->test(); // Bar::testPrivate
// Foo::testPublic
?>

1

Решение

test() в Barи вызовет методы самого высокого уровня, которые Bar имеет доступ к. Имеет доступ к Foo's testPublic (потому что это так public) так что это можно назвать, но у него нет доступа к Foo's testPrivate() (потому что это private в Foo) так он называет свой testPrivate() вместо

5

Другие решения

Других решений пока нет …