Я пытаюсь реализовать код, подобный приведенному ниже, но не в состоянии понять одну проблему, согласно моему пониманию, она должна была напечатать данные следующим образом:
Foo::testPrivate
Foo::testPublic
Но его вывод выводится как ::
Bar::testPrivate
Foo::testPublic
Код является ::
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();
Может кто-нибудь объяснить это?
Согласно моему пониманию
Вывод вывод прав, потому что вы создали объект класса «Foo», а затем после вызова test () функция находится внутри класса «Bar»
В test () функцией класса Bar является вызов testPrivate () с использованием ключевого слова «this», поэтому вызов функции в том же классе и testPrivate () также является закрытым, поэтому выводим результат, например:
Бар :: testPrivate
Foo :: testPublic
Foo :: testPrivate
Foo :: testPublic
Других решений пока нет …