ZendMvcMvcEvent は ZendEventManagerEvent を継承し、ZendMvcApplication::bootstrap() が実行されるときにトリガーされます。コントローラーが ZendMvcInjectApplicationEventInterface を実装している場合、MvcEvent がこれらのコントローラーに挿入されます。
MvcEvent は、次のオブジェクトのゲッターとルールを追加します: Application、Request、Response、Router、RouterMatch、Result (通常はコントローラーをディスパッチした結果)、ViewModel (通常はビュー モデルのレイアウトを表示)。アプリケーション、リクエスト、レスポンス、ルーター、およびビューモデルはすべて、ブートストラップ イベント プロセス中に挿入されます。次のルート イベントは RouteMatch オブジェクトに挿入され、ルーティング結果がカプセル化されます。 RouteMatch オブジェクトは MVC 全体で使用されるため、通常、Route、Request、および Response オブジェクトは RouteMatch を通じて取得されます。
MvcEvent は次のメソッドも定義します:
イベントがトリガーされる順序:
名前 | 定数 | 説明 |
ブートストラップ | MvcEvent::EVENT_ブートストラップ | ViewManagerを作成してアプリケーションを起動します |
ルート | MvcEvent::EVENT_ROUTE | ルーティング (またはルーティング関連のアクション) を実行します |
派遣 | MvcEvent::EVENT_DISPATCH | 対応するコントローラー/動作への一致したルートのスケジュール |
発送エラー | MvcEvent::EVENT_DISPATCH_ERROR | スケジュールプロセス中にエラーが発生したときにトリガーされます |
レンダリング | MvcEvent::EVENT_RENDER | データを準備し、レンダリングタスクをビューレイヤーに委任します |
レンダリングエラー | MvcEvent::EVENT_RENDER_ERROR | レンダリングプロセスでエラーが発生したときにトリガーされます |
終了 | MvcEvent::EVENT_FINISH | すべてが完了すると、このイベントは対応するタスクをトリガーします |
詳しい紹介:
MvcEvent::EVENT_BOOTSTRAP("ブートストラップ")
Listener: ZendMvcViewHttpViewManager、onBootstrap メソッドが呼び出されます。
機能: ビュー層を準備します (つまり、ZendMvcViewHttpViewManager をインスタンス化します)。
トリガーメソッド: ZendMvcApplication bootstrap() メソッド。
MvcEvent::EVENT_ROUTE("ルート")
リスナー 1: ZendMvcModuleRouteListener::onRoute
機能: 主にルートマッチングに含まれるパラメータキーが MODULE_NAMESPACE 定数と一致しないようにするために、モジュール名前空間をコントローラー名の前に追加するかどうかを決定します
Listener 2: ZendMvcRouteListener::onRoute ルートが一致しない場合、MvcEvent::EVENT_DISPATCH_ERROR がトリガーされます。
機能: ルーターへのリクエストの照合を試み、RouteMatch オブジェクトを返します。
トリガーメソッド: ZendMvcApplication::run
機能: ルーティングプロセス中にエラーが発生した場合、短いループコールバックを使用してイベントの継続的な伝播が停止されます。
MvcEvent::EVENT_DISPATCH("ディスパッチ")
リスナーは 2 つのカテゴリに分類されます。1 つはコンソール環境に限定され、もう 1 つは HTTP 環境に限定され、すべての環境に適用できるリスナーがあります。この記事では、CONSOLE 環境については紹介しません。コンソール環境については、公式ドキュメントを確認してください。
クラス ZendMvcViewHttpCreateViewModelListener には、このイベントのリスナーとして 2 つの関数があります。
1. createViewModelFromArray (コントローラーアクションが連想配列を返す場合、このリスナーは配列を ViewModel オブジェクトに変換します。2. createViewModelFromNull (コントローラーが null 値を返した場合、このメソッドはそれを ViewModel オブジェクトに変換します)
クラス ZendMvcViewHttpRouteNotFoundStrategy::prepareNotFoundViewModel は 404ViewModel を作成して返します
クラス ZendMvcViewHttpInjectTemplateListener::injectTemplate は、View Model にテンプレートを挿入します。テンプレート名は、ルート (またはコントローラー内のアクション) と一致するコントローラー名から継承されます
クラス ZendMvcViewHttpInjectViewModelListener::injectViewModel ViewModel を挿入し、MvcEvent オブジェクトに追加します。 2 つの状況があります: a) ビュー モデルを含む子オブジェクトとして追加されます。 b) 結果を終了できる場合は、デフォルトの状況を置き換えます
クラス ZendMvcMiddlewareListener::onDispatch は MvcEvent::EVENT_DISPATCH_ERROR をトリガーし、サービス マネージャーから一致する PSR-7 ミドルウェアをロードしてディスパッチします。
クラス ZendMvcDispatchListener::onDispatch は MvcEvent::EVENT_DISPATCH_ERROR をトリガーし、上記と同じ効果があります。
クラス ZendMvcControllerAbstractController::onDispatch このメソッドは抽象クラスです。
トリガー方法:
ZendMvcApplication::run は、短絡コールバックを使用してイベントの伝播を終了します。 (ルーティング時にエラーが発生した場合)
ZendMvcControllerAbstractController::dispatch リスナーが Response オブジェクトを返すと、イベントの伝播が終了します。 AbstractController がこのイベントをリッスンするたびに、トリガーされたときに onDispatch メソッドが呼び出されます。
MvcEvent::EVENT_RENDER("レンダリング") リスナー:
ZendMvcViewConsoleDefaultRenderingStrategy::render はビューのレンダリングに使用されます
ZendMvcViewHttpDefaultRenderingStrategy::render もビューをレンダリングします。上記の環境との違いに注意してください
トリガー方法:
ZendMvcApplication::competeRequest このイベントは、MvcEvent::FINISH がトリガーされる前にトリガーされます。
MvcEvent::EVENT_FINISH("終了") リスナー:
ZendMvcSendResponseListener::sendResponse は、SendResponseEvent をトリガーして応答を準備します。
トリガー方法:
ZendMvcApplication::run MvcEvent::ROUTE または MvcEvent::DISPATCH イベントが正しい ResponseInterface を返すと、このイベントがトリガーされます
ZendMvcApplication::completeRequest は、MvcEvent::RENDER の後にトリガーされます (つまり、この時点でビューがレンダリングされています)。
SendResponseイベントについて
ZendMvcResponseSenderSendResponseEvent は次のメソッドを定義します:
setResponse($response)
getResponse()
setContentSent()
コンテンツ送信()
setHeadersSent()
ヘッダーSent()
これらのメソッドは、応答ヘッダーと応答コンテンツを設定するために使用されます。
リスナー:
ZendMvcSendResponseListenerPhpEnvironmentResponseSender::__invoke は環境 HTTP を使用します
ZendMvcSendResponseListenerConsoleResponseSender::__invoke は環境コンソールを使用します。
ZendMvcSendResponseListenerSimpleStreamResponseSender::__invoke
MvcEvent::このイベントは、FINISH イベントがトリガーされた後に実行されます

ホットAIツール

Undresser.AI Undress
リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover
写真から衣服を削除するオンライン AI ツール。

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

Video Face Swap
完全無料の AI 顔交換ツールを使用して、あらゆるビデオの顔を簡単に交換できます。

人気の記事

ホットツール

MantisBT
Mantis は、製品の欠陥追跡を支援するために設計された、導入が簡単な Web ベースの欠陥追跡ツールです。 PHP、MySQL、Web サーバーが必要です。デモおよびホスティング サービスをチェックしてください。

EditPlus 中国語クラック版
サイズが小さく、構文の強調表示、コード プロンプト機能はサポートされていません

ZendStudio 13.5.1 Mac
強力な PHP 統合開発環境

Safe Exam Browser
Safe Exam Browser は、オンライン試験を安全に受験するための安全なブラウザ環境です。このソフトウェアは、あらゆるコンピュータを安全なワークステーションに変えます。あらゆるユーティリティへのアクセスを制御し、学生が無許可のリソースを使用するのを防ぎます。

SublimeText3 Mac版
神レベルのコード編集ソフト(SublimeText3)
