誰かがsymfony2アプリケーションの基本的なブートストラッププロセスを説明してもらえますか?エントリポイントから、コントローラでの特定のアクション、および小枝テンプレートシステムを使用したレンダリングビューまで。
質問する
1151 次
1 に答える
4
これについてのsymfonyブックの章があります:http ://symfony.com/doc/current/book/internals.html
章全体を読むと、内部で物事がどのように機能するかをかなりよく理解できます。
完全を期すために、ここで重要な部分を引用します。
リクエストの処理
handle()メソッドは要求を受け取り、常に応答を返します。Requestを変換するために、handle()はResolverとイベント通知の順序付けられたチェーンに依存します(各イベントの詳細については、次のセクションを参照してください)。
- 他のことを行う前に、kernel.requestイベントが通知されます。リスナーの1つが応答を返すと、ステップ8に直接ジャンプします。
- リゾルバーは、実行するコントローラーを決定するために呼び出されます。
- kernel.controllerイベントのリスナーは、呼び出し可能なコントローラーを好きなように操作できるようになりました(変更、ラップ、...)。
- カーネルは、コントローラーが実際に有効なPHP呼び出し可能であることを確認します。
- リゾルバーは、コントローラーに渡す引数を決定するために呼び出されます。
- カーネルはコントローラーを呼び出します。
- コントローラが応答を返さない場合、kernel.viewイベントのリスナーは、コントローラの戻り値を応答に変換できます。
- kernel.responseイベントのリスナーは、応答(コンテンツとヘッダー)を操作できます。
- 応答が返されます。
処理中に例外がスローされた場合、kernel.exceptionに通知され、リスナーには例外を応答に変換する機会が与えられます。それが機能する場合、kernel.responseイベントが通知されます。そうでない場合は、例外が再スローされます。
例外をキャッチしたくない場合(たとえば、埋め込み要求の場合)、handle()メソッドの3番目の引数としてfalseを渡して、kernel.exceptionイベントを無効にします。
于 2012-06-05T23:40:44.817 に答える