1

誰かがsymfony2アプリケーションの基本的なブートストラッププロセスを説明してもらえますか?エントリポイントから、コントローラでの特定のアクション、および小枝テンプレートシステムを使用したレンダリングビューまで。

4

1 に答える 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 に答える