1

私はZend 1.*プロジェクトに取り組んでおり、すべてのコントローラーがベースコントローラーを拡張し、「parent::whateverAction()」を呼び出す子で両方のアクションを複製します。

Zendでは、コントローラー内で親アクションを複製/呼び出すのが一般的ですか? 私はいつも、そのようなテクニックは素早いむち打ちを正当化すると思っていました。私の誤解ですか?

乾杯。

4

2 に答える 2

0

に配置すると予想される一般的な処理は、次のBaseControllerようになります。

  1. BaseController::xxxAction()あなたが説明しているように、パブリックメソッドとして。
  2. BaseController::xxxMethod()保護されたメソッドとして
  3. カスタムアクションヘルパーで

通常、私はxxxAction()ベースに public を作成しません。私の考えでは、ルートがマップされたときにアクションを直接呼び出す必要があります。基本コントローラ クラスに格納されたアクションは、実際にはその基準を満たしていません。

その共通処理を 上の保護されたメソッドxxxAction()にダンプすることBaseControllerはかなり一般的で、おそらく問題ありません。すべての子コントローラーはその処理にアクセスでき、アクションでそれを呼び出すことができます。

このアプローチの唯一の本当の欠点は、BaseController. 結局のところ、すべてのアクションがベースに隠されている特定の機能を使用するわけではないので、リクエストで使用しないのに、リクエストでそれをロードして解析する必要はありません。

このため、"Zendish" の方法は、共通の機能を含むアクション ヘルパーを作成することです。このアプローチには、主に次の 2 つの利点があります。

  1. ヘルパーはアクションで呼び出すことができ、オンザフライでロードされます。そのコードを呼び出さないリクエスト中に、そのコードを解析してロードする必要はありません。

  2. 原則として、ヘルパーは独自のクラスであるため、より簡単に単体テストできます。

難しい答えではありません。いくつかの考えのブレインダンプです。

于 2013-05-29T15:52:04.707 に答える