Flag of Ukraine
SymfonyCasts stands united with the people of Ukraine

Symfony 5 Deep Dive! The HttpKernel Request-Response Flow

2:53:08

What you'll be learning

This tutorial also works well for Symfony 6!
// 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.17.5
        "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.


Your Guides

Ryan Weaver

Buy Access

Join the Conversation?

4
Login or Register to join the conversation
Ouchayan H. Avatar
Ouchayan H. Avatar Ouchayan H. | posted 3 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. Avatar Ouchayan H. | Victor | posted 3 years ago

Thank you for your reply. i'm waiting.

Reply
Shiraats Avatar
Shiraats Avatar Shiraats | posted 3 years ago

Nice. Cant wait.

Reply
Cat in space

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

userVoice