2013-12-14 3 views
2

는 다음의 예를 보자클래스 밖에서 부모 메서드를 호출하려면 어떻게해야합니까?

class A implements Serializable { 
    serialize() {} 
} 
class B extends A { 
    serialize() {} 
} 

클래스 A는 모든 페이지에 사용되는들이 지속적인하지만 최소한의 클래스입니다. B 클래스는 파일을 읽음으로써 회원을 채우는 임시 관리자 전용 (설정 화면에서 사용) 클래스입니다.

개체를 직렬화하고 데이터베이스에 두 번 저장해야합니다. 일반 페이지는 한 번, 관리 페이지는 두 번째 (수명이 제한됨)입니다.

$instance = new B(); // and populate 
$data = serialize($instance); 

이것은 항상 over-raidden 메서드를 호출합니다. class A의 serialize 메서드를 호출 할 수 있도록 A을 입력하여 $instance을 캐스팅 할 수있는 방법이 있습니까?

+0

캐스팅 대신 토큰을 보내고 호출하려면 wheather를 확인하기 위해 B의 메서드에서 확인하십시오. – silentboy

+0

@silentboy serialize와 함께 추가 매개 변수를 보낼 수 없습니다. 이미 시도했다. – Twifty

+0

다른 방법으로이를 감 쌉니다. – silentboy

답변

0

대답은 아니오입니다. 자식은 메서드의 부모 기능을 다시 선언하고 완전히 재정의합니다. 이를 위해서는 정적 방법이 필요합니다.

+0

클래스가 여전히 vtable을 유지한다고 생각하면이 작업을 수행하는 데 몇 가지 트릭이있을 것이라고 생각했습니다. – Twifty

관련 문제