2017-01-30 12 views
1

나는 추상적 인 메서드 'run'을 가진 추상 클래스를 가지고있다. 이를 확장 한 하위 클래스는 run을 구현하고 bool을 출력으로 반환합니다. 추상 클래스에서 실행 (true/false) 메서드의 상태를 가져올 수있는 방법이 있습니까?추상 함수의 출력을 얻는 방법

run 메소드를 실행하기 위해 얼마나 많은 클래스가 실패/전달되었는지에 대한 통계를 거의 추가하지 않으려 고합니다. 나는 이미 많은 수업을 진행하고 있으며,이 수업에 아무 것도 추가하지 않고이 통계를 무료로 얻고 싶지 않습니다.

abstract class parent { 
    // I need the status of the run method in here 
    public abstract function run(); 
} 

class child extends parent { 
    public function run() { 
    if (implementation) { 
    return true; 
    } else { 
    return false; 
    } 
    } 
} 

감사합니다.

답변

1

추상 메소드를 호출하고 그 결과를 가져 오는 비 추상 메소드를 부모에 정의하십시오.

abstract class parent { 
    private $run_result; 

    public function run() { 
     $this->run_result = $this->run_internal(); 
    } 
    abstract protected function run_internal(); 
} 

class child extends parent { 
    protected function run_internal() { 
     if (implementation) { 
      return true; 
     } else { 
     return false; 
     } 
    } 
} 
+0

하지만 run()을 호출해야합니다. run()을 호출하지 않는 run_internal 호출 위의 클래스 자식. – Shrav

+0

하위 클래스는'run_internal()'을 호출하지 않고 * 그것을 구현합니다. 부모 클래스는 응용 프로그램이'run()'을 호출 할 때 그것을 호출합니다. – Barmar