Я новичок в php, и я просматривал документацию для наглядности. Я немного запутался с этим примером в документации.
когда звонок $myFoo->test()
сделано, не должен ли он позвонить Foo
s $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
?>
test()
в Bar
и вызовет методы самого высокого уровня, которые Bar
имеет доступ к. Имеет доступ к Foo's
testPublic
(потому что это так public
) так что это можно назвать, но у него нет доступа к Foo's
testPrivate()
(потому что это private
в Foo
) так он называет свой testPrivate()
вместо
Других решений пока нет …