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

Symfony4 - A new way of developing web applications

Symfony4 - A new way of developing web applications

Symfony4 is here and it is better than ever. With Flex it can be a micro framework and an amazing beast with any feature you want.

What changed from version 3, what are new best practices and why Symfony is moving PHP world forward once again you can find in this talk.

Antonio Peric-Mazar

August 16, 2018
Tweet

More Decks by Antonio Peric-Mazar

Other Decks in Programming

Transcript

  1. Locastic • We help clients create amazing web and mobile

    apps (since 2011) ◦ mobile development ◦ web development ◦ UX/UI ◦ Training and Consulting • @locastic • www.locastic.com • Split, Croatia @antonioperic
  2. We can do better • Installing a Bundle is too

    cumbersome • Remove a Bundle is too cumbersome @antonioperic
  3. We can do better • Installing a Bundle is too

    cumbersome • Remove a Bundle is too cumbersome • The standard edition is not good enough @antonioperic
  4. We can do better • Installing a Bundle is too

    cumbersome • Remove a Bundle is too cumbersome • The standard edition is not good enough • You always have a lot of code that you are not using but it is to hard to remove it @antonioperic
  5. Symfony4 • Starting as micro framework • Compose your application

    / setup your stack • Build API, console app, traditional web app or whatever you want @antonioperic
  6. Symfony flex recipies • Two repositories • symfony/recipies ◦ maintained

    by Symfony Core Team and holds only recipies for Symfony components and bundles ‘opinionated’ by them ◦ Can use alias • symfony/recipies-contrib ◦ Anyone can contribute ◦ Cannot use alias @antonioperic
  7. Directory structure @antonioperic we say goodby to app.php and app_dev.php — this

    is now one standard index.php file and environment is set with environmental variable APP_ENV
  8. Directory structure @antonioperic Flex keeps tracks of the recipes it

    installed in a symfony.lock file, which must be committed to your code repository.
  9. Bundle-less applications • Bundle vs no-bundle apps • All in

    src folder ◦ App/ namespace ◦ You should separate, but no need for bundles • Moving forward to standardisation • It reduces the perceived complexity, also makes your code feels more decoupled from symfony • Bundle inheritance mechanisms are deprecated in 3.4 and were removed in 4.0 @antonioperic
  10. Let’s call this a small demo - Our task will

    be to create simple Symfony console application, a web crawler - Steps: - Create new symfony application - composer create-project symfony/skeleton my_project - Add Console component - Add Doctrine - Add Symfony Crawler component - Do some code (we will not do code, idea is just to see the flow of working with Symfony4) @antonioperic
  11. Add components • Composer req cli • Composer req doctrine

    • Composer req symfony/dom-crawler @antonioperic
  12. Autowiring • Introduced in Symfony 3 version • Autowiring allows

    you to manage services in the container with minimal configuration • It reads the type-hints on your constructor (or other methods) and automatically passes the correct services to each method. • Symfony's autowiring is designed to be predictable: if it is not absolutely clear which dependency should be passed, you'll see an actionable exception. @antonioperic
  13. Symfony Webpack Encore • Webpack encore is a simpler way

    to integrate Webpack into your application • Step forward after AsseticBundle • composer require webpack-encore • It can work outside of Symfony @antonioperic
  14. DotEnv component • The Dotenv Component parses .env files to

    make environment variables stored in them accessible via getenv(), $_ENV or $_SERVER. • composer require symfony/dotenv @antonioperic
  15. Updating to Symfony • It is possible, not even to

    complex • Need a little bit of time • If you are using Symfony2.x, upgrade first to 3.4 @antonioperic
  16. Symfony 4.1 improvements • Made csrf_token() useable without forms •

    Csv processor for env variables • Display DotEnv variables in profiler • Session improvements • Console improvements • Workflow improvements • Messenger component https://symfony.com/blog/symfony-4-1-curated-new- features @antonioperic
  17. 7 months later • It is great feeling to works

    with Symfony4 • Seems that Fabien and core team are making great progress moving Symfony forward • I love Flex • It is seems much more natural to navigate through new code structure and DX is much better • Symfony community is awesome @antonioperic
  18. 7 months later • Symfony is great as microframework •

    With higher level of abstraction is more better for prototyping and building things fast • It will be much easier to start, but maybe even harder to master for newbies (symfony2 wasn’t easy to master) @antonioperic