> Symfony 5 >

Course Overview

Login to bookmark this course

Symfony 5 Deep Dive! The HttpKernel Request-Response Flow

Dive deep into Symfony's core! Discover the all-powerful HttpKernel::handle() method used in Symfony and Drupal.

  • 3854 students
  • EN Captions
  • EN Script
  • Certificate of Completion

Your Guides

About this course

This tutorial also works well for Symfony 6!

What PHP libraries does this tutorial use?

// composer.json
{
    "require": {
        "php": ">=8.1",
        "ext-iconv": "*",
        "antishov/doctrine-extensions-bundle": "^1.4", // v1.4.3
        "aws/aws-sdk-php": "^3.87", // 3.133.20
        "composer/package-versions-deprecated": "^1.11", // 1.11.99
        "doctrine/annotations": "^1.0", // 1.12.1
        "doctrine/doctrine-bundle": "^2.0", // 2.2.3
        "doctrine/doctrine-migrations-bundle": "^1.3|^2.0", // 2.2.2
        "doctrine/orm": "^2.5.11", // 2.8.2
        "easycorp/easy-log-handler": "^1.0", // v1.0.9
        "http-interop/http-factory-guzzle": "^1.0", // 1.0.0
        "knplabs/knp-markdown-bundle": "^1.7", // 1.9.0
        "knplabs/knp-paginator-bundle": "^5.0", // v5.4.2
        "knplabs/knp-snappy-bundle": "^1.6", // v1.7.1
        "knplabs/knp-time-bundle": "^1.8", // v1.16.0
        "league/flysystem-aws-s3-v3": "^1.0", // 1.0.24
        "league/flysystem-cached-adapter": "^1.0", // 1.0.9
        "league/html-to-markdown": "^4.8", // 4.9.1
        "liip/imagine-bundle": "^2.1", // 2.5.0
        "oneup/flysystem-bundle": "^3.0", // 3.7.0
        "php-http/guzzle6-adapter": "^2.0", // v2.0.2
        "phpdocumentor/reflection-docblock": "^5.2", // 5.2.2
        "sensio/framework-extra-bundle": "^5.1", // v5.6.1
        "symfony/asset": "5.0.*", // v5.0.11
        "symfony/console": "5.0.*", // v5.0.11
        "symfony/dotenv": "5.0.*", // v5.0.11
        "symfony/flex": "^1.9", // v1.21.6
        "symfony/form": "5.0.*", // v5.0.11
        "symfony/framework-bundle": "5.0.*", // v5.0.11
        "symfony/mailer": "5.0.*", // v5.0.11
        "symfony/messenger": "5.0.*", // v5.0.11
        "symfony/monolog-bundle": "^3.5", // v3.6.0
        "symfony/property-access": "5.0.*|| 5.1.*", // v5.1.11
        "symfony/property-info": "5.0.*|| 5.1.*", // v5.1.10
        "symfony/routing": "5.1.*", // v5.1.11
        "symfony/security-bundle": "5.0.*", // v5.0.11
        "symfony/sendgrid-mailer": "5.0.*", // v5.0.11
        "symfony/serializer": "5.0.*|| 5.1.*", // v5.1.10
        "symfony/twig-bundle": "5.0.*", // v5.0.11
        "symfony/validator": "5.0.*", // v5.0.11
        "symfony/webpack-encore-bundle": "^1.4", // v1.11.1
        "symfony/yaml": "5.0.*", // v5.0.11
        "twig/cssinliner-extra": "^2.12", // v2.14.3
        "twig/extensions": "^1.5", // v1.5.4
        "twig/extra-bundle": "^2.12|^3.0", // v3.3.0
        "twig/inky-extra": "^2.12", // v2.14.3
        "twig/twig": "^2.12|^3.0" // v2.14.4
    },
    "require-dev": {
        "doctrine/doctrine-fixtures-bundle": "^3.0", // 3.4.0
        "fakerphp/faker": "^1.13", // v1.13.0
        "symfony/browser-kit": "5.0.*", // v5.0.11
        "symfony/debug-bundle": "5.0.*", // v5.0.11
        "symfony/maker-bundle": "^1.0", // v1.29.1
        "symfony/phpunit-bridge": "5.0.*", // v5.0.11
        "symfony/stopwatch": "^5.1", // v5.1.11
        "symfony/var-dumper": "5.0.*", // v5.0.11
        "symfony/web-profiler-bundle": "^5.0" // v5.0.11
    }
}

Want to see how Symfony really works under-the-hood? Let's do it!

In this tutorial, we'll dive deep: tracing from the first line of code that's executed in public/index.php through the core of Symfony's HttpKernel. It's a daring adventure that includes events, controller resolvers, request attributes, and giant sea monsters... probably:

  • Hooking into Symfony with an event subscriber
  • Finding where the Request is created
  • The all-powerful HttpKernel::handle() method that's used in Symfony AND Drupal!
  • See where the core events like RequestEvent, ControllerEvent and more are dispatched
  • Controller resolver, argument resolver, argument value resolvers oh my!
  • Request attributes: the secret carrier of framework info
  • What is a sub-request?
  • Manually creating and handling sub-requests

By the end of this tutorial, you'll understand how the dots connect deep under the surface of Symfony... making you capable of hooking into just about any part of Symfony. Woh.

4 Comments

Sort By
Login or Register to join the conversation
Ouchayan H. avatar Ouchayan H. 4 years ago

Could You tell me when you will publish the course.

| Reply |

Hey Hamid,

We're working actively on this one right now, so it should be available pretty soon. I think the idea to release it in the end of March or early April, depend on our availability, because we're going to release a few more courses very soon. Please, feel free to subscribe to the and we will let you know when the first chapter is released, and later the 2nd email to let you know when it's completely released.

Cheers!

| Reply |
Ouchayan H. avatar Ouchayan H. Victor 4 years ago

Thank you for your reply. i'm waiting.

| Reply |
Shiraats avatar Shiraats 4 years ago

Nice. Cant wait.

| Reply |

Delete comment?

Share this comment

astronaut with balloons in space

"Houston: no signs of life"
Start the conversation!