誰かがコントローラープラグインとアクションヘルパーの違いについていくつかのヒントや例を教えてもらえますか?特定のタスクを1つで達成できるが、別のタスクでは達成できない状況はありますか?私にとっては、どちらもほぼ同じように見え、いつ何を使用するかを決めるのに苦労することがよくあります...大きな違いはありますか?
5 に答える
コントローラープラグインは、ルーティングプロセス(preDispatch postDispatch、routeStartup、routeShutdown)の任意の時点で任意のコントローラーにフックできるため、ACL施行などの舞台裏の機能を提供するのに適しています。
アクションヘルパーは、コントローラーがアクセスする必要がある可能性のある再利用可能であるがオプションのセグメント(リダイレクター、flashMessenger)用です。
したがって、常に自分自身を実行する必要がある再利用可能なコードスニペットを作成する場合は、コントローラープラグインを使用します。それ以外の場合は、アクションヘルパーが必要になる可能性があります。
あなたはそれをこのように考えることができます:
- アクションヘルパーは、コントローラーにメソッドを追加するために使用されます。
- コントローラプラグインは、コントローラにルーティング/ディスパッチロジックを追加するために使用されます。
では、コントローラーのすべてのアクションから呼び出しられるようにしたいメソッドはありますか?または、ルーティング/ディスパッチプロセスにロジックを追加する必要がありますか?
ビルトインアクションヘルパーもご覧ください。
プラグインとアクションヘルパーの違いを説明する写真: ZFシーケンスフロー
アクションヘルパーは、実行されている実際のコントローラーオブジェクトにもアクセスできます。コントローラープラグインはFrontControllerにのみアクセスできるため、コントローラーとアクション名のみにアクセスできます。
どちらを使用するかは、必要なコンテキストによって異なります。たとえば、コントローラに接続されているビューオブジェクトにアクセスする必要がある場合は、アクションヘルパーが必要になります。
また、フロントコントローラーのライフサイクルプロセスでは、プラグインがアクションヘルパーよりも最初にコントロールを取得(または呼び出される)することに注意してください。