Loading...

Follow Symfony Blog on Feedspot

Continue with Google
Continue with Facebook
or

Valid

After two years of development and years of R&D from our partners: the technology behind SymfonyCloud is now production ready. We are thus super happy to announce the general availability of SymfonyCloud!

Ryan Weaver, Symfony Core Team member and SymfonyCasts founder:

Thanks to SymfonyCloud, we deleted thousands of lines of infrastructure config. What did we get in return? More reliable deployments, faster response times, automatic security upgrades, true staging environments & endless debugging tools. It’s made for Symfony apps, which means it handles a lot of details for us. But we also extended it hard: microservices that talk to each other, Elasticsearch, Redis, multiple databases & even some crazy things with workers & custom video processing tools. SymfonyCloud makes doing all of this (with a small team and no sys-admins) possible.

Damien Alexandre, French consultant at JoliCode, PHP and Elasticsearch expert:

Currently playing with @symfony Cloud for a new project

  • basic setup deployed in a couple of hours;
  • great configuration format;
  • no ops, no admin-sys;
  • even managed to run the @redirectionio agent, thanks to @tucksaun

So far, so good

SymfonyCloud, our PaaS optimized for Symfony applications, has been unveiled last December. Since then, we have opened registration for Early Access to the platform on a daily basis. We gathered a lot of feedback during the last six months of Early Access. It allowed us to improve the product a lot: UI, DX, documentation, support, and billing.

This might not be easy for everyone not involved in SymfonyCloud development to follow everything that happened during the last months so today I would like to share with you some of our achievements.

SymfonyCloud is a fully-managed platform created by friendly Symfony developers for busy Symfony developers. It is the best way to host your Symfony applications. It tightly integrates with Symfony's best practices and development workflow to give you the tools to develop locally with comfort and deploy with confidence. This is especially true for the latest versions of Symfony 4 with the Built-In Environment Variable Processors, workers implementation (to manage the queues in the Messenger component) or RabbitMQ Management UI enabled by default just like any other supported services (MySQL/MariaDB, PostgreSQL, Redis, Memcached, Elasticsearch, RabbitMQ, MongoDB, Influx DB, Solr, Varnish, and Kafka...).

SymfonyCloud allows you to completely define and configure the topology and services you want to use on your projects. Unlike other PaaS services, SymfonyCloud is batteries included which means that you don't need to subscribe to external services to get a cache or a search engine. And that those services are managed. When you back up your project, all of the services are backed-up. It also guarantees full compatibility with the Symfony CLI local web server to test locally your services from production.

A perfect use-case of SymfonyCloud is symfony.com!

The symfony.com website is hosted on SymfonyCloud since the opening of the Early Access registration. It totally changed the way we hosted the website before and allowed us to:

  • Get more people being able to deploy;

  • Work on an exact replica of our production environment to add new features and work bug fixes. For instance, we were super confident to update to Symfony 4.3 as we could test everything!

  • Considerably simplify the deployment coordination (everything is now configured in 1 file of less than 200 lines of YAML);

  • Change only 1 line in the config (well to be correct, just 1 number actually) to update PHP 7.1 to 7.3;

  • Cut off the deployment downtime to 0 (no need anymore to wait to access the website during its deployment).

SymfonyCloud brings you simplicity and confidence in your infrastructure management:

  • Describe your infrastructure
  • Deploy continuously
  • Synchronize your app data and services

Titouan Galopin, Symfony developer:

At En Marche (a French political party), we were used to rely on Kubernetes on Google Cloud to orchestrate and manage our Symfony applications. We invested a lot of time and resources into building a scalable and reliable environment with it.

However, as the party grew, we had less and less time to dedicate to infrastructure. When we launched the European elections campaign in December 2018, we decided to switch to SymfonyCloud. The result was outstanding: we got the same level of scalability and reliability, with additional flexibility, zero-downtime deployment, dropping thousands of lines of YAML and for a cheaper price. Everything became much simpler in an instant.

But in my opinion, what’s even more interesting is how SymfonyCloud helped us organize our IT department around the needs of the different other departments. By being able to host different Git branches in parallel on different URLs, we were able to work on the same project for both the legal department, the political department and the accounting, iterating on three different features in parallel with different interlocutors. This alone saved us dozens of meetings and hundreds of hours of many people across the entire organization.

Deploy today, get started now with SymfonyCloud!

Be trained by Symfony experts - 2019-07-15 Clichy - 2019-07-15 Clichy - 2019-07-17 Clichy
  • Show original
  • .
  • Share
  • .
  • Favorite
  • .
  • Email
  • .
  • Add Tags 

This week, the upcoming Symfony 4.4 version worked on improving the progress bar redraws of the Console component, deprecated WebserverBundle in favor of the Symfony local web server and introduced a feature to make the bundle public dir configurable. Meanwhile, the upcoming Symfony 5.0 version added compatibility with Monolog 2.

Symfony development highlights

This week, 102 pull requests were merged (74 in code and 28 in docs) and 81 issues were closed (58 in code and 23 in docs). Excluding merges, 43 authors made 5,867 additions and 2,866 deletions. See details for code and docs.

3.4 changelog:

  • d92c9b8: [EventDispatcher] added tag kernel.rest on 'debug.event_dispatcher' service
  • 9fc8d2e: [Translator] load plurals from po files properly
  • feab919: [Translator] load plurals from mo files properly
  • 931965a: [HttpFoundation] don't assume port 0 for X-Forwarded-Port
  • fea98a8: [FrameworkBundle] inform the user when save_path will be ignored
  • 37756d3: [DependencyInjection] added tests to cover the possibility of having scalars as services
  • 5e839f4, bf466b1: [Validator] Updated Persian translations
  • 91f4752: [Debug] include found files in DebugClassLoader instead of requiring them

4.2 changelog:

  • 6b8d4aa: [Serializer] fixed AbstractObjectNormalizer ignores the property types of discriminated classes

4.3 changelog:

  • bb9251a: [Messenger] fixed publishing headers set on AmqpStamp
  • 94db7d4: [Messenger] support setting auto_setup from DSN in Doctrine Transport
  • 98bbc57: [SecurityBundle] fixed profiler dump for non-invokable security listeners
  • 70c7424: [FrameworkBundle] fixed descriptor of routes described as callable array

4.4 changelog:

  • a731c3b: [Mime] added check for openssl when using SMime
  • 51cf65e: [HttpClient] added $response->toStream() to cast responses to regular PHP streams
  • a640c30: [Translation] deprecated passing a null locale
  • 499ad6d: [Stopwatch] deprecated passing null in Section::get() method
  • dc56389: [WebProfilerBundle] added clear button to ajax tab
  • 088270e: [Console] allow answer to be trimmed by adding a flag
  • 3c9ff1f: [Security] LdapBindAuthenticationProvider does not bind before search query
  • c202e96: [Console] added ProgressBar::preventRedrawFasterThan() and forceRedrawSlowerThan() methods
  • 3e2ee71: [ServerBundle] display all logs by default
  • 14614bd: [Cache] added argument $prefix to AdapterInterface::clear()
  • 400eaa6: [WebserverBundle] deprecated the bundle in favor of Symfony local server
  • 7647209: [Console] added Application::reset()
  • ea0da05: [Console] don't redraw progress bar more than every 100ms by default
  • 2d04e20: [DependencyInjection] deprecated booting the kernel twices
  • e1cea97: [Validator] allowed to use property paths to get limits in range constraint
  • 608d428: [Lock] split StoreInterface into multiple interfaces with less responsabilities
  • 29654a4: [VarDumper] let browsers trigger their own search on double CMD/CTRL + F
  • 4a50400: [Debug] restoring back the state of the Debug component
  • de710f6, adcd643: allow to configure the directory of bundle assets
  • 4499e2a: renamed ErrorCatcher to ErrorRenderer
  • fd3ad65: [Validator] added a new constraint message when there is both min and max

Master changelog:

  • 40d04ec: [MonologBridge] Monolog 2 compatibility
Newest issues and pull requests They talked about us Upcoming Symfony Events Call to Action
Be trained by Symfony experts - 2019-07-15 Clichy - 2019-07-15 Clichy - 2019-07-17 Clichy
  • Show original
  • .
  • Share
  • .
  • Favorite
  • .
  • Email
  • .
  • Add Tags 

This week, the upcoming Symfony 4.4 version improved the Length validation constraint to allow rejecting empty strings, the HttpClient component added support for NTLM authentication and the Panther component was updated to allow using the new BrowserKit assertions. Meanwhile, the SymfonyCon 2019 conference announced the first part of its schedule.

Symfony development highlights

This week, 93 pull requests were merged (70 in code and 23 in docs) and 39 issues were closed (19 in code and 20 in docs). Excluding merges, 36 authors made 1,497 additions and 567 deletions. See details for code and docs.

3.4 changelog:

  • db05791: [DependencyInjection] fixed processing of regular parameter bags by MergeExtensionConfigurationPass
  • a383649: [FrameworkBundle] reset cache pools between requests
  • 7f43681: [SecurityBundle] conditionally register services

4.2 changelog:

  • 26048bc: [FrameworkBundle] unconditionally register the DateIntervalNormalizer
  • c33c396: [Lock] stores must implement putOffExpiration
  • 8e07e77: [Messenger] don't pass objects as class name to ContainerBuilder::register

4.3 changelog:

  • b7a75e4: [Workflow] only decorate when an event dispatcher was passed
  • 51f01bd: [FrameworkBundle] deprecated the framework.templating option
  • 74bd8b6: [FrameworkBundle] fixing validation for messenger transports retry_strategy service key
  • 09e762e: [Messenger] fixed authentication for redis transport
  • c799fc8: [Messenger] fixed broken key normalization

4.4 changelog:

  • 7bd0a27: [Messenger] added support for auto trimming of redis streams
  • 70318b4: [HttpFoundation] drop support for ApacheRequest
  • 802dc1b: [Filesystem] deprecated calling isAbsolutePath with a null
  • 7b9c026: [Mailer] overwrite envelope sender and recipients from config
  • ea0656a: [HttpKernel] improved the error message when not defining the controller as a service but using construct parameters
  • 4e32643: [Validator] added a Length::$allowEmptyString option to reject empty strings
  • 6abaa8c: [Validator] deprecated non-string constraint violation codes
  • df13b50: [HttpClient] added support for NTLM authentication
  • 2452ef8: [PropertyInfo] added static cache to ContextFactory
  • 9b4f801: [FrameworkBundle] allow to use the BrowserKit assertions with Panther and API Platform's test client
  • b7c9fcf: [HttpFoundation] accept must take the lead for Request::getPreferredFormat()
  • e3927b6: [Messenger] use ConnectionRegistry instead of RegistryInterface
  • 0151279: [ErrorCatcher] pretty print JSON formatted errors
  • 08aa16f: [ErrorCatcher] fixed some escaping in error renderers
  • a672bbc: [FrameworkBundle] allow creating chained cache pools by providing several adapters
  • b515107: [FrameworkBundle] use default_locale as default value for translator.fallbacks
  • 42899cd: [FrameworkBundle] add autowiring alias for PSR-14

Master changelog:

  • f800d01: [Cache] finish type-hints
  • 393f9ae: [CSRF] add more parameter types
  • cc9778e: [Security, Guard] added type-hints to AuthenticatorInterface
  • b163a95: [Security] added type-hints to user providers
  • 7af0c73: [Security] added type-hints to password encoders
  • 6128276: [Security] added type-hints to auth providers, tokens and voters
  • 90c1603: [ExpressionLanguage] add type-hints whenever possible
  • bfabad4: [Config] finish adding parameter types
  • 7eb0912: [Process] replace docblocks by type-hints
  • e5adbe6: [PropertyAccess] add type-hints to public interfaces and classes
  • 78dc3c3: [Workflow] added parameter typhint where possible
  • 53e68f7: [Translator] add parameter type-hints where possible
  • 885a192: [WebProfilerBundle] add parameter type-hints where possible
Newest issues and pull requests They talked about us Upcoming Symfony Events Call to Action
Be trained by Symfony experts - 2019-07-8 Cologne - 2019-07-8 Cologne - 2019-07-8 Clichy
  • Show original
  • .
  • Share
  • .
  • Favorite
  • .
  • Email
  • .
  • Add Tags 

SymfonyCon Amsterdam 2019, the annual international Symfony reunion, will take place at the Beurs van Berlage downtown Amsterdam from November 19th to 23rd. The entire event is composed of:

  • November 19th-20th: 2-day pre-conference workshops
  • November 21st-22nd: 2-day conference
  • November 23rd: 1-day hackday

We’ve announced last week all the pre-conference workshop topics, read our blog post to find out the trainings we offer before the conference! Get trained on the latest features of Symfony, PHP and its ecosystem just before the conference. You can choose one workshop topic per day among 5 workshops offered. Create now your own pre-conference workshops combo, select your workshop topic per day and book your workshop registration. Pre-conference workshop tickets are not sold separately from conference tickets.

The combo ticket price includes the 2-day workshops, 2-day conference, the hackday (breaks and lunches during all the 5 days are included). Get 20% off the global price for workshops and conference days with the combo ticket. Improve your Symfony and PHP skills before the conference, register now!

The conference schedule will be divided into 4 tracks: advanced Symfony track, beginner Symfony track, PHP track and an Unconference track. We’re still reviewing all the talk proposals we received for the conference and we’d like to thank all the people who took the time to submit a talk proposal for the conference. We’ve just selected the first conference speakers and are very pleased to announce who they are! We’ll have the great pleasure to welcome on stage (in order of appearance on the conference schedule):

  • Fabien Potencier, Symfony founder/project lead, will be on stage for the Opening Keynote!
  • Benoit Jacquemont, will explain everything you need to know about "HTTP/3: It's all about the transport!". The announcement of HTTP/3 at the start of November 2018 may have come as a surprise for a lot of us. In this talk, we will explain why this version 3 of the HTTP protocol has been designed, especially around the latency topic. We will cover as well how technically this version works, and what it will bring to our applications, and what are the challenges that will need to be addressed, in order to fully benefit from this new version of the protocol that runs the Web.
  • Diana Ungaro Arnos, will speak about "PHP, Symfony and Security". The latest versions of PHP provide security tools and modern cryptography and Symfony itself make its efforts to deliver robust security features that are simple to implement. We'll learn about the latest language and framework initiatives in this regard and check out short and quick tips for boosting you application's security.
  • Julien Pauli, will talk about "A view in the PHP Virtual Machine. This talk is about how PHP works. We'll learn together how PHP compiles, optimizes then execute your scripts, both in Web environment and CLI apps. We'll dive into PHP's source code - written in C - to extract some parts of interest and study them to better understand PHP's behaviors as well as best practices in terms of performances (CPU cycles and memory allocations).
  • Tobias Schultze, will be on stage to speak about "Evolving with Symfony in a long-term project". This case study will explore the API architecture of Switzerland’s biggest retail company that has been in development for 7 years. We will see what has changed over the years, both in terms of coding practices and technologies. Besides Symfony, some of the technologies used are Cloudfoundry, Varnish, RabbitMQ and Elasticsearch. Let us find out which approaches proved to be successful and which didn’t work so well.
  • Zan Baldwin, will speak about "Crazy Fun Experiments with PHP (Not for Production)". I’ll show you the crazy things you can do in PHP with streams and autoloader overloading to write your own language features. I’ll also show you how you can supercharge your Symfony applications using aspect-orientated programming or encrypt source code on-the-fly using only PHP. As if that wasn’t enough, we’ll go even further and make PHP a polyglot language by importing esoteric language scripts!
  • Matthias Noback, will talk about "Hexagonal Architecture with Symfony". Symfony offers many excellent components for your web and console applications. In this talk I will explain an architectural style called "Hexagonal Architecture", which will help you structure your applications in such a way that you can focus most of your development effort on the core of your application, designing it in a way that makes its production code sustainable and easy to test.
  • Matthias Pigulla, will explain "HTTP Caching with Symfony 101". HTTP caching is a powerful technique to improve response times for site visitors, make more efficient use of bandwidth and reduce server load. We will have a look at the basic concepts, the different caching strategies and HTTP headers used to implement them. I will then show you a few ways how to implement HTTP level caching in your Symfony application, how to leverage the HTTP Cache included in the framework and resolve the mystery around ESI.
  • Magnus Nordlander, will speak about "How fitness helps you become a better developer". We often think of technical skills as the way to level up as developers, but we're not (yet) brains-in-a-vat. Our body and physical health are crucial to be able to work well as developers. In this talk I speak both about the science behind fitness and nutrition, and my personal journey of losing over 70 kgs, starting to go to the gym, how it affected me as a developer, as well as the shocking secret behind what happened to the Sound of Symfony podcast.

Check out the conference schedule! We'll soon announce the entire conference schedule, stay tuned!

We can't wait to meet you at SymfonyCon Amsterdam 2019, register now for the conference or for a combo pre-conference workshops and conference!

See you at the conference!

Be trained by Symfony experts - 2019-07-8 Cologne - 2019-07-8 Cologne - 2019-07-8 Clichy
  • Show original
  • .
  • Share
  • .
  • Favorite
  • .
  • Email
  • .
  • Add Tags 

The new Symfony binary, announced during SymfonyCon Lisbon 2018, is getting better by the day.

If you haven't heard about the Symfony local web server yet, you can discover it in the official documentation

With 30+ releases since the first public release, we have been hard at work fixing bugs and adding features.

We now auto-detect more PHP versions installed on your machine (MacOS, Windows, and Linux) from many different vendors (in addition to the PHP binaries located under your $PATH). In no particular order: Homebrew, phpenv, Liip PHP, Ondrej PPA, Remi's RPM repository, XAMPP, MAMP, phpbrew, Cygwin, Chocolatey, WAMP, and MacPorts.

We claimed support for HTTP/2, but this was partially true. We falled back to HTTP/1 when you were using local domain names. Not anymore. HTTP/2 is now supported even when using nice domain names ending with .wip.

One convenient feature of the local web server is the ability to run different versions of PHP depending on the project (via a .php-version file for instance). That also works on the console when running symfony run script.php. In addition, it also automatically reads environment variables (from .env files). That's very useful when running a script that does not use the Symfony Dotenv component. Use symfony php script.php and done. The same features are now available for many commands: pecl, pear, php-config, php-fpm, php-cgi, composer, and phpdbg.

By default, the local web server reads the Symfony environment (dev or prod for instance) from your .env configuration. You can force the production environment by running symfony local:server:prod (disable it via symfony local:server:prod --off).

Pure HTML websites or SPAs can also use the local web server; no need for something else.

Last but not least, we have added support for Docker. We think this provides the ideal local working environment: local native PHP performance with local domains, TLS, HTTP2, and logs aggregation and service management via Docker Compose (or SymfonyCloud). Integration is almost automatic if you are exposing the ports of your services. The services are then exposed as environment variables to the Symfony application. The documentation explains how you can do it. One nice feature is that ports being random on the host, you can work on several projects using Docker without having to shutdown one to work on the next. Having random ports works because the environment variables are exposed automatically by the symfony CLI.

Also note that checking for vulnerabilities in your project should now be done via the symfony CLI as well, more specifically via the security:check command. It does the checks locally without using the HTTP API (it clones the security advisories database to determine issues). That's ideal to use in your CI as well.

Be trained by Symfony experts - 2019-07-8 Cologne - 2019-07-8 Cologne - 2019-07-8 Clichy
  • Show original
  • .
  • Share
  • .
  • Favorite
  • .
  • Email
  • .
  • Add Tags 

This week, Symfony 3.4.29, 4.2.10 and 4.3.2 maintenance versions were released. Meanwhile, the SymfonyLive Tunis 2020 conference date was announced, as well as the workshops for the SymfonyCon 2019 conference in Amsterdam. Finally, the Symfony Core Team added Yonel Ceruto as its latest member.

Symfony development highlights

This week, 108 pull requests were merged (84 in code and 24 in docs) and 56 issues were closed (45 in code and 11 in docs). Excluding merges, 38 authors made 6,648 additions and 3,686 deletions. See details for code and docs.

3.4 changelog:

  • 7cc4cab: [FrameworkBundle] fixed calling Client::getProfile() before sending a request
  • c511e46: [EventDispatcher] collect called listeners information only once
  • c042b5b: [HttpFoundation] fixed accessing session bags
  • eb438a4: [Security] work around sodium_compat issue
  • 2bab37d: [Serializer] catch JsonException and rethrow in JsonEncode
  • 278bfba: [Serializer] fixed PHP of DenormalizableInterface::denormalize

4.2 changelog:

  • 6b83861: [Lock] fixed missing inherit docs in RedisStore
  • 6437c5a: [Twig bridge] added missing rendering of form help block
  • 3f16506: [Cache] work around PHP memory leak

4.3 changelog:

  • 67af93f: [Messenger] no need for retry to require SentStamp
  • 9830c64: [Workflow] re-add workflow.definition tag to workflow services
  • b68a6b3: [Messenger] fixed retrying handlers using DoctrineTransactionMiddleware
  • 7f9dad1: [Messenger] extract unrecoverable exception to interface
  • a590829: [HttpClient] fixed timing measurements with NativeHttpClient
  • c245f7c: [Filesystem] fixed mirroring directory into parent directory
  • 0219834: [HttpClient] fixed dealing with 1xx informational responses
  • bd2356d: [Messenger] Doctrine Connection find and findAll now correctly decode headers
  • f8b0bfd: [Mailer] fixed issue when using html body in Mailgun mailer
  • 4e915bd: [PhpunitBridge] read environment variable from superglobals
  • e55978a: [EventDispatcher] improved error messages in the event dispatcher
  • f2f7fb4: [Mailer] fixed error message when connecting to a stream raises an error before connect()
  • 278bfba: [Serializer] fixed PHP of DenormalizableInterface::denormalize
  • 0d5258a: [Workflow] deprecated DefinitionBuilder::setInitialPlace()

4.4 changelog:

  • bd8ad3f: [Process] allow writing portable "prepared" command lines
  • 64b68d4: [PhpUnitBridge] more accurate grouping
  • 13a5e2d, 45526a1: added ErrorCatcher component
  • 0d5258a: [Workflow] deprecated DefinitionBuilder::setInitialPlace()
  • 3644b70: [PropertyAccess] deprecated null as allowed value for defaultLifetime argument in createCache method
  • 8dd5464: [Lock] added an InvalidTTLException to be more accurate
  • 835f6b0: [Mime] added S/MIME support

Master changelog:

  • 18793b7: added return types in final classes
  • 8124159: [Messenger] made all stamps final and mark stamp not meant to be sent
  • efaa154: [Security] added return type declaration
  • 71525d4: [Form] removed form type validation due to typehints
  • 150f0f2: [EventDispatcher] added type-hints to EventDispatcherInterface
  • f123436, 7b3ef19: [Routing] added type-hints to all public interfaces
  • 3644b70: [PropertyAccess] deprecate null as allowed value for defaultLifetime argument in createCache method
  • aac5765: [Debug] removed all deprecated classes that were moved to the ErrorCatcher component
  • 8dd5464: [Lock] added an InvalidTTLException to be more accurate
  • 0781b60: [Serializer] added type-hints to serializer interface
  • bac35b0: [Asset] added type-hints to public interfaces and classes
  • f2b261d: [PropertyInfo] added type-hints to public interfaces and classes
  • 7485b6f: [OptionResolver] added type-hints to OptionResolver class
  • 7739849: [Config] added type-hints to public interfaces and classes
  • faaa83c: [DependencyInjection] added type-hints on compiler passes
  • eead643: [Validator] added parameter type hints to the Validator component
  • a6677ca: [Ldap] added type-hint to interface and implementation
Symfony Local Server

Symfony Local Server, the best way to run Symfony applications on your local machine, released its new 4.6.0 version with the following changes:

  • Add HTTP/2 support in proxy to local web server
  • Enforce having SSH key configured before trying to connect using SSH
  • Make sure deploy always return an exit status != 0 when deploy fails
  • Show payment method details during SymfonyCloud checkout
  • Make the SymfonyCloud checkout payment more explicit
  • Expose SYMFONY_DEFAULT_ROUTE_{URL,HOST,SCHEME,PATH,PORT} environment variables
  • Fix .env files override relationships and tunnels environment variables in Console context
  • Make symfony php forward exit status code
  • Fix rsync paths are being switched when using local to remote way
  • Fix typo in env:rsync help
  • Fix slowness in the local server because of connection attempt to Docker even if docker-compose is not in use
  • Fix Docker integration when project directory name contains special characters
Newest issues and pull requests They talked about us Upcoming Symfony Events Call to Action
Be trained by Symfony experts - 2019-07-8 Cologne - 2019-07-8 Cologne - 2019-07-8 Clichy
  • Show original
  • .
  • Share
  • .
  • Favorite
  • .
  • Email
  • .
  • Add Tags 

I'm pleased to announce that Yonel Ceruto is joining the Symfony Core Team.

Yonel has been contributing to Symfony for the last 4 years now. He started fixing a typo in the code, and contributed via many pull requests over the years. His biggest achievement so far? A pull request that I've just merged for Symfony 4.4: the new ErrorHandler component (which deserves a whole blog post on its own). Yonel also likes to work on complex topics nobody wants to work on! I won't list them all here, but he worked fixing issues on a lot of different Symfony components and bundles.

Please, join me in welcoming Yonel in his new role!

Be trained by Symfony experts - 2019-07-8 Cologne - 2019-07-8 Cologne - 2019-07-8 Clichy
  • Show original
  • .
  • Share
  • .
  • Favorite
  • .
  • Email
  • .
  • Add Tags 

The international Symfony conference is coming from 19th to 23rd November 2019, join us for SymfonyCon Amsterdam 2019 at the beautiful Beurs van Berlage, downtown Amsterdam! We’ll have the pleasure to meet you for a full week of Symfony:

  • November 19th-20th: 2-day pre-conference workshops
  • November 21st-22nd: 2-day conference
  • November 23rd: 1-day hackday

We're thrilled to announce that all the workshop topics are now online! If you already registered for a workshop, you should have received an email asking you to choose your workshop combo. If you're not yet registered neither for the conference nor the combo pre-conference workshops and conference, here is a sneak peak of our workshop schedule. We offer 5 workshops per day, all workshops except the workshop "Practical Design Patterns with Symfony" are one-day workshop. Discover our workshop schedule:

Tuesday November 19th:
  • Building API-driven apps with API Platform by Kévin Dunglas - Les-Tilleuls.coop. Learn how to use and extend the most popular features of the API Platform: data providers and persisters, docs, pagination, validation, sorting, filtering, authentication, authorization, content negotiation, Mercure live update and much more! This hands-on workshop is focused on the server part of the framework (PHP).
  • Getting ready for Symfony 5 by Nicolas Grekas - Symfony. Learn how to install third-party packages with Symfony Flex, configure your application with environment variables or exploit the new features of the dependency injection container. You will also learn how to prepare a Symfony 4 app for version 5, to be released next November. EventDispatcher, Security, Cache, etc - many important components have been improved, which means some part of them have been deprecated, and replaced by updated interface.
  • Practical Design Patterns with Symfony (two days) by Titouan Galopin - SymfonyInsight lead. Discover Software Architecture from the point of view of a Symfony developer. We will discuss the Design Patterns implemented by the framework and learn how these patterns can help you develop better Symfony applications. We will also implement the most important of these patterns in a real-world Symfony application in order to give you effective practical tools for your next project.
  • Practical Doctrine ORM within Symfony apps by Julien Pauli - SensioLabs trainer & PHP core contrib. Learn how to create entities and mappings and practice with some querying scenarios to understand how the ORM works and how it can help us. This workshop will teach what a UnitOfWork is, what are N+1 queries and how you can prevent them. Basically, we will cover everything you need to know to persist your data efficiently with Dotrine ORM.
  • Create an eCommerce website with Sylius by Sylius Core Team Members Łukasz Chruściel and Mateusz Zalewski. Sylius is the only e-commerce framework entirely based on Symfony (with Symfony 4 and Flex support), crafted with clean code and BDD. Join us and see that eCommerce development can be easy and fun. During the workshops, we will together start with vanilla Sylius configuration and customize it to our needs. After the workshops, you will have a good insight into Sylius structure and its core concepts.
Wednesday November 20th:
  • Profiling Symfony & PHP apps by Nicolas Grekas - ex-Blackfire CTO. Profiling an application should always be the first step in trying to improve its performance. With this workshop, learn how to identify performance issues in your application and adopt the best profiling practices in your daily development habits. This workshop will use the Blackfire.io tool to help you identify performance leaks.
  • Practical Forms with Symfony by Julien Pauli - SensioLabs trainer & PHP core contrib. This workshop will teach you the core of the Symfony Form component: its architecture, how to validate submitted input with built-in and custom validators, what are form types and how to use them, their hierarchy and their options, using DTOs to decouple forms from your entities, using Data Tranformers to automate data treatments, writing Form extensions to push forward the limits of factorisation, etc.
  • Writing Modern JS with Symfony & Webpack Encore by Ryan Weaver - SymfonyCasts. In this workshop, we'll use the Webpack Encore library from Symfony to quickly bootstrap a sophisticated asset setup, complete with minification, SASS processing, free versioning, automatic code-rewriting to support older browsers and more! Everything you need to start writing great JavaScript quickly. We'll also learn about using JavaScript modules, how to bootstrap a framework (like Vue) and other important modern practices.
  • Knowing your state machines - Symfony Workflow by Tobias Nyholm - Happyr CTO & Founder. The state pattern will help you move complexity from being all over your code to one or more state machines. Tobias' workshop will introduce state machines, show you how to identify uses of them, and implement them in your Symfony application in an object-oriented manner using the Symfony Workflow component.
  • Practical Design Patterns with Symfony (day 2) by Titouan Galopin - SymfonyInsight lead.

Check our workshop descriptions in details! Create now your own pre-conference workshops combo, select your workshop topic per day and book your workshop registration. Pre-conference workshop tickets are not sold separately from conference tickets.

The combo ticket price includes the 2-day workshops, 2-day conference, the hackday (breaks and lunches during all the 5 days are included). Get 20% off the global price for workshops and conference days with the combo ticket. Improve your Symfony and PHP skills before the conference, register now!

We can't wait to meet you at SymfonyCon Amsterdam 2019, stay tuned for the latest news about the international Symfony conference!

Be trained by Symfony experts - 2019-07-8 Cologne - 2019-07-8 Cologne - 2019-07-8 Clichy
  • Show original
  • .
  • Share
  • .
  • Favorite
  • .
  • Email
  • .
  • Add Tags 
Symfony Blog by Fabien Potencier - 3w ago

Symfony 4.3.2 has just been released. Here is a list of the most important changes:

  • bug #31954 [PhpunitBridge] Read environment variable from superglobals (@greg0ire)
  • bug #32131 [Mailgun Mailer] fixed issue when using html body (@alOneh)
  • bug #31730 [PhpUnitBridge] More accurate grouping (@greg0ire)
  • bug #31966 [Messenger] Doctrine Connection find and findAll now correctly decode headers (@TimoBakx)
  • bug #31972 Add missing rendering of form help block. (@alexsegura)
  • bug #32141 [HttpClient] fix dealing with 1xx informational responses (@nicolas-grekas)
  • bug #32138 [Filesystem] fix mirroring directory into parent directory (@xabbuh)
  • bug #32137 [HttpFoundation] fix accessing session bags (@xabbuh)
  • bug #32147 [HttpClient] fix timing measurements with NativeHttpClient (@nicolas-grekas)
  • bug #32165 revert #30525 due to performance penalty (@bendavies)
  • bug #32164 [EventDispatcher] collect called listeners information only once (@xabbuh)
  • bug #32173 [FrameworkBundle] Fix calling Client::getProfile() before sending a request (@dunglas)
  • bug #32163 [DoctrineBridge] Fix type error (@norkunas)
  • bug #32154 [Messenger] fix retrying handlers using DoctrineTransactionMiddleware (@Tobion)
  • bug #32169 [Security/Core] require libsodium >= 1.0.14 (@nicolas-grekas)
  • bug #32170 [Security/Core] Don't use ParagonI _Sodiu _Compat (@nicolas-grekas)
  • bug #32156 [Workflow] re-add workflow.definition tag to workflow services (@nikossvnk)
  • bug #32053 [Messenger] No need for retry to require SentStamp (@Tobion)
  • bug #32083 [HttpClient] fixing passing debug info to progress callback (@nicolas-grekas)
  • bug #32129 [DebugBundle] fix register ReflectionCaster::unsetClosureFileInfo caster in var cloner service (@alekitto)
  • bug #32027 [Messenger] Remove DispatchAfterCurrentBusStamp when message is put on internal queue (@Nyholm)
  • bug #32125 [Form] accept floats for input="string" in NumberType (@xabbuh)
  • bug #32094 [Validator] Use LogicException for missing Property Access Component in comparison constraints (@Lctrs)
  • bug #32136 [FrameworkBundle] sync require-dev and conflict constraints (@xabbuh)
  • bug #32123 [Form] fix translation domain (@xabbuh)
  • bug #32115 [SecurityBundle] don't validate IP addresses from env var placeholders (@xabbuh)
  • bug #32116 [FrameworkBundle] tag the FileType service as a form type (@xabbuh)
  • bug #32109 [Messenger] fix delay exchange recreation after disconnect (@Tobion)
  • bug #32090 [Debug] workaround BC break in PHP 7.3 (@nicolas-grekas)
  • bug #32076 [Lock] Fix PDO prune not called (@jderusse)
  • bug #32071 Fix expired lock not cleaned (@jderusse)
  • bug #32052 [Messenger] fix AMQP delay queue to be per exchange (@Tobion)
  • bug #32065 [HttpClient] throw DecodingExceptionInterface when toArray() fails because of content-type error (@nicolas-grekas)
  • bug #32057 [HttpFoundation] Fix SA/phpdoc JsonResponse (@ro0NL)
  • bug #32040 [DI] Show the right class autowired when providing a non-existing class (@Simperfit)
  • bug #32035 [Messenger] fix delay delivery for non-fanout exchanges (@Tobion)
  • bug #32025 SimpleCacheAdapter fails to cache any item if a namespace is used (@moufmouf)
  • bug #32022 [HttpClient] Don't use CurlHttpClient on Windows when curl.cainfo is not set (@nicolas-grekas)
  • bug #32037 [Form] validate composite constraints in all groups (@xabbuh)
  • bug #32007 [Serializer] Handle true and false appropriately in CSV encoder (@battye)
  • bug #32036 [Messenger] improve logs (@Tobion)
  • bug #31998 Parameterize Mailgun's region (@jderusse)
  • bug #32000 [Routing] fix absolute url generation when scheme is not known (@Tobion)
  • bug #32012 Add statement to fileLink to ignore href code when no fileLink. (@bmxmale)
  • bug #32024 [VarDumper] fix dumping objects that implement debugInfo() (@nicolas-grekas)
  • bug #32014 Do not log or call the proxy function when the locale is the same (@gmponos)
  • bug #32011 [HttpClient] fix closing debug stream prematurely (@nicolas-grekas)
  • bug #32017 [Contracts] add missing required dependencies (@mbessolov)
  • bug #31992 Fix sender/recipients in SMTP Envelope (@fabpot)
  • bug #31999 [PhpunitBridge] Restore php 5.5 compat (@greg0ire)
  • bug #31991 [EventDispatcher] collect called listeners information only once (@xabbuh)
  • bug #31988 [TwigBridge] add back possibility to use form themes without translations (@xabbuh)
  • bug #31982 [HttpClient] fix Psr18Client handling of non-200 response codes (@nicolas-grekas)
  • bug #31953 [DoctrineBridge] fix handling nested embeddables (@xabbuh)
  • bug #31962 Fix reporting unsilenced deprecations from insulated tests (@nicolas-grekas)
  • bug #31936 PropertyInfoLoader should not try to add validation to non-existent property (@weaverryan)
  • bug #31923 [Serializer] Fix DataUriNormalizer deprecation (MIME type guesser is optional) (@ogizanagi)
  • bug #31928 [FrameworkBundle] avoid service id conflicts with Swiftmailer (@xabbuh)
  • bug #31925 [Form] fix usage of legacy TranslatorInterface (@nicolas-grekas)
  • bug #31908 [Validator] fix deprecation layer of ValidatorBuilder (@nicolas-grekas)

Want to upgrade to this new release? Fortunately, because Symfony protects backwards-compatibility very closely, this should be quite easy. Read our upgrade documentation to learn more.

Want to be notified whenever a new Symfony release is published? Or when a version is not maintained anymore? Or only when a security issue is fixed? Consider subscribing to the Symfony Roadmap Notifications.

Be trained by Symfony experts - 2019-06-26 Berlin - 2019-06-26 Lille - 2019-06-26 Clichy
  • Show original
  • .
  • Share
  • .
  • Favorite
  • .
  • Email
  • .
  • Add Tags 
Symfony Blog by Fabien Potencier - 3w ago

Symfony 4.2.10 has just been released. Here is a list of the most important changes:

  • bug #31972 Add missing rendering of form help block. (@alexsegura)
  • bug #32137 [HttpFoundation] fix accessing session bags (@xabbuh)
  • bug #32164 [EventDispatcher] collect called listeners information only once (@xabbuh)
  • bug #32173 [FrameworkBundle] Fix calling Client::getProfile() before sending a request (@dunglas)
  • bug #32163 [DoctrineBridge] Fix type error (@norkunas)
  • bug #32170 [Security/Core] Don't use ParagonI _Sodiu _Compat (@nicolas-grekas)
  • bug #32094 [Validator] Use LogicException for missing Property Access Component in comparison constraints (@Lctrs)
  • bug #32123 [Form] fix translation domain (@xabbuh)
  • bug #32116 [FrameworkBundle] tag the FileType service as a form type (@xabbuh)
  • bug #32090 [Debug] workaround BC break in PHP 7.3 (@nicolas-grekas)
  • bug #32076 [Lock] Fix PDO prune not called (@jderusse)
  • bug #32071 Fix expired lock not cleaned (@jderusse)
  • bug #32057 [HttpFoundation] Fix SA/phpdoc JsonResponse (@ro0NL)
  • bug #32025 SimpleCacheAdapter fails to cache any item if a namespace is used (@moufmouf)
  • bug #32037 [Form] validate composite constraints in all groups (@xabbuh)
  • bug #32007 [Serializer] Handle true and false appropriately in CSV encoder (@battye)
  • bug #32000 [Routing] fix absolute url generation when scheme is not known (@Tobion)
  • bug #32024 [VarDumper] fix dumping objects that implement debugInfo() (@nicolas-grekas)
  • bug #31962 Fix reporting unsilenced deprecations from insulated tests (@nicolas-grekas)
  • bug #31925 [Form] fix usage of legacy TranslatorInterface (@nicolas-grekas)
  • bug #31908 [Validator] fix deprecation layer of ValidatorBuilder (@nicolas-grekas)
  • bug #31894 Fix wrong requirements for ocramius/proxy-manager in root composer.json (@henrikvolmer)
  • bug #31865 [Form] Fix wrong DateTime on outdated ICU library (@aweelex)
  • bug #31879 [Cache] Pass arg to get callback everywhere (@fancyweb)
  • bug #31863 [HttpFoundation] Fixed case-sensitive handling of cache-control header in RedirectResponse constructor (@Ivo)
  • bug #31869 Fix json-encoding when JSO _THRO _O _ERROR is used (@nicolas-grekas)
  • bug #31868 [HttpKernel] Fix handling non-catchable fatal errors (@nicolas-grekas)
  • bug #31860 [HttpFoundation] work around PHP 7.3 bug related to jso _encode() (@nicolas-grekas)
  • bug #31407 [Security] added support for updated "distinguished name" format in x509 authentication (@Robert Kopera)
  • bug #31786 [Translation] Fixed case sensitivity of lint:xliff command (@javiereguiluz)
  • bug #31757 [DomCrawler] Fix type error with null Form::$currentUri (@chalasr)
  • bug #31654 [HttpFoundation] Do not set X-Accel-Redirect for paths outside of X-Accel-Mapping (@vilius-g)

Want to upgrade to this new release? Fortunately, because Symfony protects backwards-compatibility very closely, this should be quite easy. Read our upgrade documentation to learn more.

Want to be notified whenever a new Symfony release is published? Or when a version is not maintained anymore? Or only when a security issue is fixed? Consider subscribing to the Symfony Roadmap Notifications.

Be trained by Symfony experts - 2019-06-26 Berlin - 2019-06-26 Lille - 2019-06-26 Clichy

Read for later

Articles marked as Favorite are saved for later viewing.
close
  • Show original
  • .
  • Share
  • .
  • Favorite
  • .
  • Email
  • .
  • Add Tags 

Separate tags by commas
To access this feature, please upgrade your account.
Start your free month
Free Preview