2017-01-30 6 views
1

抽象メソッド 'run'を持つ抽象クラスがあります。これを継承する子クラスはrunを実装し、boolを出力として返します。 抽象クラスでrun(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

関連する問題