2012-01-27 2 views
0

나는 다음을 달성하고 싶다,하지만 난 그것을 할 방법을 잘 모르겠어요 :PHP 클래스 상속 및 확장 방법

class foo { 
    function doSomething(){ 
     // do something 
    } 
} 

class bar extends foo { 
    function doSomething(){ 
     // do something AND DO SOMETHING ELSE, but just for class bar objects 
    } 
} 

는 여전히 doSomething() 방법을 사용하여이 동안 할 수 있는가, 아니면을 새로운 방법을 만들어야합니까?

편집 : 명확히하기 위해 상속 된 메소드에서 'do something'을 다시하고 싶지는 않지만 foo-> doSomething() 메소드에 한 번만 명시한 다음 하위 클래스 .

답변

2

당신이 바로 그랬습니다. 당신이 foodoSomething()를 호출 할 경우, 단순히 bar에서이 작업을 수행 :

function doSomething() { 
    // do bar-specific things here 
    parent::doSomething(); 
    // or here 
} 

그리고 당신이 언급하는 방법을 재 작성, 일반적으로 오버로드라고합니다.

+0

정확히 내가 필요한 것입니다. 고맙습니다! – Matthew

1

당신은 parent 키워드를 사용하여이 작업을 수행 할 수 있습니다

class bar extends foo { 
    function doSomething(){ 
     parent::doSomething(); 
    } 
} 
0

당신이 그것을 덮어하지 않은 같은 클래스를 사용하면 간단하게, 부모 - 방법을 사용 $this->method()를 사용할 수있는 확장. 이를 덮어 쓰면 스 니펫이 새 메서드를 가리 킵니다. 그런 다음 parent::method()을 통해 상위 메소드에 액세스 할 수 있습니다.