어리석은 것처럼 들릴지 모르지만 저는 PHP에서 새로 왔습니다. 나는이 절을 보았을 때 접근 지시자에 대한 문서에서부터 배우고 있었다. ?Foo 클래스 (Bar 클래스를 확장)의 test() 함수를 호출하면 두 클래스 모두에서 혼합 된 결과가 반환되는 이유는 무엇입니까?
class Bar {
public function __construct() {
echo "Bar::constructor<br />";
}
public function test() {
$this->PublicTest();
$this->PrivateTest();
$this->protectedTest();
}
public function PublicTest(){
echo "Bar::testPublic<br />";
}
private function PrivateTest() {
echo "Bar::testPrivate<br />";
}
protected function ProtectedTest() {
echo "Bar::testProtected<br />";
}
}
class Foo extends Bar {
public function __construct() {
echo "Foo::constructor<br />";
}
public function PublicTest() {
echo "Foo::testPublic<br />";
}
private function PrivateTest() {
echo "Foo::testPrivate<br />";
}
protected function ProtectedTest() {
echo "Foo::testProtected<br />";
}
}
$myFoo = new Foo();
$myFoo->test();
>
이 같은 출력을 생성합니다
Foo::constructor
Foo::testPublic
Bar::testPrivate
Foo::testProtected
왜 public
에 대한 Foo
클래스와 protected
함수에서 인쇄하는 동안은 private
기능에 Bar
클래스에서 인쇄합니까? 이 클래스에 없기 때문에 함수에 Bar
클래스에서 액세스합니다.
$this
어디로 포인터가 있습니까? 그것은 Foo
클래스의 함수 또는 Bar
클래스의 함수를 가리 킵니까? 나는 정말로 여기에서 혼란스러워한다. 누군가 제게 이것을 설명해 주시겠습니까? 어떤 도움이라도 대단히 감사 할 것입니다.
여기 비슷한 스레드가 도움이 될 수도 있습니다 http://stackoverflow.com/questions/4361553/php-public-private-protected – brad
@brad 감사합니다 ...하지만 그건 내 의심을 명확히하지 않았다. : – Beevk
비공개 클래스 만 볼 수 있습니다 public = 누구나 볼 수 있고 액세스 할 수있는 사람은 볼 수 있으며 어떤 클래스도 볼 수 있습니다. 나는 100 % 확신 할 수는 없지만 Foo 클래스는 PublicTest 및 ProtectedTest ..... – brad