클래스 A와 B 고려 자식 클래스의 오버라이드 (override) 메서드를 호출하는 방법 :PHP OOP - 다음과 같이
Class A {
public function A1(){
$this->A2();
}
public function A2(){}
}
Class B extends A {
public function A2() {} // overriding A2
}
$instance= new B();
$instance -> A1(); // Calling A1 of class B which calls the parent class A1 actually
당신은 클래스 B는 함수 A2를 무시 볼 수 있듯이. A2는 방법의 A1 클래스에서 호출
문제는
는 어떻게 확인 할 수 클래스 B의 최우선 A2를 클래스 A에서 A2를 호출하지 않는 것이입니다 나는 메소드를 오버라이드 (override)하는 경우 재정의 메서드는 부모 클래스 (A) 메서드에서 호출 된 경우에도 호출됩니다 (실제 개체가 재정의 (B) 클래스의 인스턴스 일 때).
나는 문제를 재현 할 수 없었다. (https://gist.github.com/kojiromike/e74c62a00af63b25b0e1) – kojiro
당신이 원하는 것은 무엇인지 알고 싶습니다. 이것으로 모든 것이 잘됩니다. 클래스 B의 객체를 인스턴스화합니다. A1을 호출하면 A의 A1 메서드가 호출됩니다. 벌금. 그런 다음'$ this'를 호출하면 실제로'B'가됩니다. 그리고'B'는 "A" – vaso123
의'A2' 메소드를 오버 라이팅합니다.'B :: A2'를 호출 할 것입니다. 그것이 당신이 얻는 것이 아니라면, 그 문제를 명확하게 보여주는 예제를 제공하십시오. 이 샘플에서는이 문제를 보여주지 않습니다. – deceze