ホームページ >バックエンド開発 >PHPチュートリアル >リクエストから応答へ:Drupal 8内部への旅
Drupal 8(およびSymfony2)への深さ:リクエスト対応プロセス
コアポイント
応答
この記事では、Drupal 8(およびSymfony2)の内部構造をより深く見て、ユーザーが見る時間にリクエストをする瞬間に実際に何が起こるか(そして何が起こるか)を理解したいと思います。彼らが物事を返す応答)。上記の例は、このプロセスが進むことができる1つの方向に過ぎず、今日は他の可能性が見られます。目標は、システムの柔軟性を理解することです。これにより、優れたアプリケーションの構築に役立ちます。
より深く掘り下げる前に、このチャートをチェックすることを強くお勧めします。レンダリングシステムは写真の一部にすぎないため、名前が示唆する以上のものを表しているように思えますが。
Symfony2は現在、Drupalの重要な部分です。後者は多くのSymfonyコンポーネントを使用しています。この記事の最も重要なコンポーネントは、httpkernelおよびhttpfoundationコンポーネントです。一緒に、彼らはユーザー要求をカプセル化し、それらをアプリケーションに渡し、その後、一貫したオブジェクト指向の方法で返されたコンテンツをユーザーに返す責任があります。 httpkernelInterface(他のコンテキストからも聞いたことがあるかもしれません)リクエストオブジェクトを受信し、常に応答オブジェクトを返すことにより、これらすべてを接着します。非常にシンプルだが強力なコンセプト。
httpkernelとイベント
レンダリングされた配列をより深く理解する コントローラーが応答オブジェクトを返さない場合、カーネルは最後のイベントをトリガーします:kernel.view。そのサブスクライバーは、コントローラーの結果を実際の応答オブジェクトに変換する責任があります。したがって、これは、そのオブジェクトを正しい応答に変換するビューイベントサブスクライバーと組み合わせる限り、コントローラーからあらゆるタイプのオブジェクトを返すことができることを意味します。
これを処理するために、Drupal 8には、この配列を正しい応答オブジェクトに変換する責任があるMainContentViewSubscriberがあります。これは、前述の形式交渉段階で選択された特定のMainContentrendererを使用して行います。これらのレンダラーの一部はすでに利用可能ですが、使用されるデフォルトのレンダラーはHTMLRENDERERです。
これは最も一般的に使用されるメインコンテンツレンダラータイプであるため、ページの構築方法を詳しく見てみましょう。
結論
この記事では、ユーザー要求からサーバーリターンへの応答を追跡することにより、内部的にDrupal 8(およびSymfony2)を調査しました。 Drupal 8がhttpkernelおよびhttpfoundation symfony2コンポーネントをどのように活用しているか、そしてそれが基本的にそれらのコンポーネントの上にある方法を見てきました。さらに、それらの間の接着剤がカーネルによって派遣されたイベントで構成されていることがわかります。最後に、レンダリングパイプラインの助けを借りて、HTMLページをユーザーに戻す方法を見てきました。 Drupal 8アプリケーションで舞台裏で何が起こっているのかを理解することで、このプロセスに到達する場所を正確に知ることで優れたアプリケーションを作成できると思います。この記事から1つだけを奪うだけなら、それは柔軟性という言葉であるべきだと思います。 Drupal 8で必要なものを構築する柔軟性は、Drupal 7で何よりもはるかに多いためです。それは確かに現代になりました。 についてのFAQ
Drupal 7とDrupal 8の主な違いは何ですか? Drupal 8リクエストと応答を処理する方法は? Drupal 8のルーティングシステムの役割は何ですか? Drupal 8のテーマシステムはどのように機能しますか? Drupal 8でカスタムモジュールを開発するにはどうすればよいですか?
Drupal 8は、データベースAPIを使用してデータベースの相互作用を処理します。データベースAPIは、SQLの上に抽象化レイヤーを提供し、開発者が基礎となるデータベースエンジンの詳細を理解せずにデータベースクエリを作成できるようにします。また、動的クエリ、トランザクション、およびスキーマ管理もサポートしています。 Drupal 8のイベントスケジューラは、イベントとイベントリスナーの管理に使用されます。イベントが発生すると、イベントスケジューラは登録されたすべてのリスナーに通知し、アクションを実行できます。これにより、モジュールは分離された方法で相互に対話できます。 Drupal 8には、パフォーマンスの向上に役立つ複雑なキャッシュシステムがあります。データベース、ファイル、メモリベースのバックエンドなど、複数のキャッシュされたバックエンドをサポートします。 Drupal 8には、キャッシュされたデータの微調整された故障を可能にするキャッシュタグシステムもあります。 Drupal 8の機能は、モジュールとテーマを介して拡張できます。モジュールは新しい機能を追加したり、既存の機能を変更したり、テーマがサイトのルックアンドフィールを制御します。 Drupal 8は、機能とサービスの交換を可能にするプラグインをサポートし、システムの他の部分に注入できる再利用可能な機能を提供します。 この改訂された出力は、直接的なコピーを避けている間、文と段落をrepraseしながら維持しますDrupal 8は、Drupal 7と比較していくつかの大きな変化を導入します。 Twigと呼ばれる新しいテーマエンジンがあり、より安全で柔軟性があります。 Drupal 8はモバイルフレンドリーでもあり、より多くの組み込みフィールドが含まれています。言語管理と翻訳サポートが改善された多言語サイトをよりよくサポートします。さらに、Drupal 8は、Symfonyコンポーネントが広く使用されているため、サードパーティのプラットフォームとより適切に統合します。
Drupal 8 Symfony HTTPKernelコンポーネントを使用して、リクエストと応答を処理します。リクエストが行われると、Drupal 8はリクエストオブジェクトを作成し、httpkernelに渡します。 httpkernelはルーティングシステムを使用して、どのコントローラーがリクエストを処理するかを決定します。コントローラーはリクエストを処理し、応答オブジェクトを返します。これは、HTTPKernelがクライアントに送り返します。
Drupal 8のルーティングシステムは、URLを特定のコントローラーにマッピングする責任があります。モジュールが提供するルーティング定義を使用して、指定された要求を処理するコントローラーを決定します。ルーティングシステムは、システムの状態に応じて変更できる動的ルーティングもサポートします。
Drupal 8のテーマシステムは、柔軟で安全なテンプレートエンジンであるTwigを使用しています。 Drupal 8のトピックは、.info.ymlファイル(トピックに関するメタデータを提供)とTwigテンプレートファイル(HTML出力を定義)で構成されています。テーマシステムはテンプレートの継承もサポートしているため、テーマが他のテーマやモジュールからテンプレートを拡張および上書きすることができます。
Web開発にDrupal 8を使用することの利点は何ですか?
Drupal 8データベースの相互作用を処理する方法は?
Drupal 8のイベントスケジューラの役割は何ですか?
Drupal 8キャッシュを処理する方法は?
Drupal 8の機能を拡張するにはどうすればよいですか?
以上がリクエストから応答へ:Drupal 8内部への旅の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。