Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Cataloging Symfony

Cataloging Symfony

Symfony has grown a lot since its inception. Between 2.0 and the current 5.3 release over 25 components were added. In our talk we want to take a look at these components, group them into layers and then discuss common principles for components in these layers. At the heart of this discussion are package design principles.

This knowledge will not only help you better understand how Symfony is built and how to use these components standalone (or possibly not), it will also help you design better applications and libraries yourself.

6a1345d8e6dd15b2c78eff0c331963b1?s=128

Denis Brumann

June 17, 2021
Tweet

Transcript

  1. Cartographing Symfony Making sense of the Symfony Components when used

    standalone or in full-stack
  2. Christian Flothmann @xabbuh Denis Brumann @dbrumann

  3. Symfony 2.0 Full List of Components BrowserKit ClassLoader Config Console

    CssSelector DependencyInjection DomCrawler EventDispatcher Filesystem Finder Form HttpFoundation HttpKernel Locale Process Routing Security Serializer Templating Translation Validator Yaml
  4. Symfony 2.0 Full List of Components BrowserKit ClassLoader Config Console

    CssSelector DependencyInjection DomCrawler EventDispatcher Filesystem Finder Form HttpFoundation HttpKernel Locale Process Routing Security Serializer Templating Translation Validator Yaml 22 components
  5. Symfony 5.3 Full List of Components Asset BrowserKit Cache Config

    Console CssSelector DependencyInjection DomCrawler Dotenv ErrorHandler EventDispatcher ExpressionLanguage Filesystem Finder Form HttpClient HttpFoundation HttpKernel Inflector Intl Ldap Lock Mailer Messenger Mime Notifier OptionsResolver PasswordHasher Process PropertyAccess PropertyInfo RateLimiter Routing Runtime Security Semaphore Serializer Stopwatch String Templating Translation Uid Validator VarDumper VarExporter WebLink Workflow Yaml
  6. Symfony 5.3 Full List of Components Asset BrowserKit Cache Config

    Console CssSelector DependencyInjection DomCrawler Dotenv ErrorHandler EventDispatcher ExpressionLanguage Filesystem Finder Form HttpClient HttpFoundation HttpKernel Inflector Intl Ldap Lock Mailer Messenger Mime Notifier OptionsResolver PasswordHasher Process PropertyAccess PropertyInfo RateLimiter Routing Runtime Security Semaphore Serializer Stopwatch String Templating Translation Uid Validator VarDumper VarExporter WebLink Workflow Yaml 28 NEW components
 *compared to Symfony 2.0
  7. application features framework features utility features core features

  8. application features framework features utility features thin wrapper for PHP

    features self contained improve usability/DX/interop
  9. Core Features Asset BrowserKit Cache Config CssSelector DependencyInjection DomCrawler Console

    ErrorHandler EventDispatcher ExpressionLanguage Filesystem DotEnv Form HttpClient HttpFoundation Inflector Intl Ldap HttpKernel Mailer Messenger Mime Notifier Lock Finder Process PropertyAccess PropertyInfo Routing Security Semaphore RateLimiter Stopwatch String Templating Translation Serializer OptionsResolver VarExporter Weblink Workflow VarDumper Uid Validator Yaml Runtime PasswordHasher
  10. core features application features framework features utility features

  11. core features application features framework features provides basic features few

    dependencies shared functionality
  12. Utility Features Asset BrowserKit Cache Config CssSelector DependencyInjection DomCrawler Console

    ErrorHandler EventDispatcher ExpressionLanguage Filesystem DotEnv Form HttpClient HttpFoundation Inflector Intl Ldap HttpKernel Mailer Messenger Mime Notifier Lock Finder Process PropertyAccess PropertyInfo Routing Security Semaphore RateLimiter Stopwatch String Templating Translation Serializer OptionsResolver VarExporter Weblink Workflow VarDumper Uid Validator Yaml Runtime PasswordHasher
  13. core features utility features framework features application features

  14. core features utility features framework features high level functionality extendable

    help building app-features
  15. Application Features Asset BrowserKit Cache Config CssSelector DependencyInjection DomCrawler Console

    ErrorHandler EventDispatcher ExpressionLanguage Filesystem DotEnv Form HttpClient HttpFoundation Inflector Intl Ldap HttpKernel Mailer Messenger Mime Notifier Lock Finder Process PropertyAccess PropertyInfo Routing Security Semaphore RateLimiter Stopwatch String Templating Translation Serializer OptionsResolver VarExporter Weblink Workflow VarDumper Uid Validator Yaml Runtime PasswordHasher
  16. core features utility features application features framework features

  17. core features utility features application features provide configurability customizable help

    run the application
  18. Framework Features Asset BrowserKit Cache Config CssSelector DependencyInjection DomCrawler Console

    ErrorHandler EventDispatcher ExpressionLanguage Filesystem DotEnv Form HttpClient HttpFoundation Inflector Intl Ldap HttpKernel Mailer Messenger Mime Notifier Lock Finder Process PropertyAccess PropertyInfo Routing Security Semaphore RateLimiter Stopwatch String Templating Translation Serializer OptionsResolver VarExporter Weblink Workflow VarDumper Uid Validator Yaml Runtime PasswordHasher
  19. provide configurability customizable help run the application high level functionality

    extendable help building app-features provides basic features few dependencies shared functionality thin wrapper for PHP features self contained improve usability/DX/interop
  20. 12.534 37.103 9.720 15.659

  21. 12.534 37.103 9.720 15.659 75.016

  22. core features utility features application features framework features

  23. core features utility features application features framework features less
 coupled

    more
 coupled
  24. core features utility features application features framework features easier
 to

    set up harder to set up
  25. core features utility features application features framework features easier
 to

    set up harder to set up
  26. core features utility features application features framework features easier
 to

    set up harder to set up
  27. core features utility features application features framework features easier
 to

    set up harder to set up
  28. core features utility features application features framework features easier to

    use
 standalone harder to use
 standalone
  29. core features utility features application features framework features easier to

    use
 standalone harder to use
 standalone
  30. None
  31. None
  32. None
  33. Symfony 2.8 Assets ExpressionLanguage Intl Ldap OptionsResolver PropertyInfo

  34. Symfony 3.4 Cache DotEnv Inflector WebLink Workflow

  35. Symfony 4.4 ErrorHandler HttpClient Mailer Messenger Mime Notifier VarExporter

  36. Symfony 5.3 PasswordHasher RateLimiter Runtime Semaphore String Uid

  37. Decoupled?! Using Symfony Components standalone is really difficult!

  38. None
  39. None
  40. None
  41. Where is Waldo? Why doesn’t Symfony have feature X, Y

    or Z?
  42. None
  43. Extract components & reuse Evolve abstractions & solidify contracts Identify

    shared functionalities Start with everything
 in one place
  44. Thank You!