1

私はこのような同様の構造を持っています:

親クラス

abstract class parentActions extends sfActions
{
   // overloaded from sfActions
   public function preExecute()
   {
     // do some stuff before every action
   }

}

子クラス

class someActions extends parentActions
{
  public function preExecute()
  {
     // do some more stuff
     parent::preExecute();
  }
}

私の質問は次のとおりparent::preExecute()です。それを上書きする子メソッドでの呼び出しを強制するにはどうすればよいですか?

私がまだ知らない symfony の他の方法 (オーバーロードしない別の方法か何か) はありますか?

親メソッドを呼び出す必要があります。そうしないと、機能が壊れます!

4

3 に答える 3

1

これはまさに継承が行うべきことです。子供は、前後の条件を保持しながらメソッドを専門にします。これにより、親クラスを子クラスに置き換えることができます。

おそらく、子クラスに実装される親クラスで空のフックを宣言finalし、preExecute()宣言に追加して、偶発的なオーバーライドを防ぐことができます。

于 2012-10-17T07:51:30.897 に答える
1

それを強制する方法はありません。親メソッドを呼び出すかどうかを決定するのは、子クラスの唯一の責任です。

于 2012-10-17T07:46:48.783 に答える