This is a lite version. See full website.

SymfonyLive Cologne 2016

This is a conference report for my company:

Hi all,

I visited SymfonyLive Cologne 2016 conference last week. It was really well-organised and with the subject area was not limited just to Symfony.

“REST Services with Symfony” was a whole-day workshop lead by Christopher Hertel. There was a lot of theoretical knowledge about Symfony as HTTP framework, about REST, its levels of maturity, and generally how to REST correctly. We played with manually creating RESTful controllers and looked into internals of FOSRestBundle which generates them automatically.

Another whole-day workshop was “Maintainable Doctrine ORM Applications” by Marco Pivetta. It actually was neither Symfony- or Doctrine-specific. We learned an approach to creating database schemas that is considerably different from what I’m used to doing, including:

Bernhard Schussek held a talk “Symfony Forms: Dos and Don’ts”, and it showed exactly what the title promised, focusing mostly on the most recent changes in the symfony/forms component in the version 3.0.

“Maßgeschneiderte Testdaten mit Faker und Alice” by Philipp Rieber was a presentation about fake-data generator libraries: Faker and Alice. The first one is used in Skyrocket (well, a bit), it provides a large number of generators, like names, surnames, addresses, phone numbers, identification numbers, IBANs, ISBNs, etc., many of which are locale-specific. Really powerful tool. It is just a plain PHP, though, and not so neat to use. Alice is a library that extends its power and allows you to create very expressive YAML fixture files with nice and easy relations management. Check out an example of what it can do: https://github.com/nelmio/alice#example

Benjamin Eberlei in “Go lernen für einen Symfony Websocket Proxy” showed an example of when is it useful to be polyglot - he explained why is a language like Go suited to handle a web socket server and how to communicate it with PHP application. A simple example can be seen here: https://github.com/beberlei/websocket-proxy-example

“Modernisieren mit Symfony” by Alexander M. Turek showed an idea of how to migrate some old legacy non-MVC code to a nice Symfony application. How to do it step-by-step and to have a functioning application at every moment of the refactoring. Basically, you need to adjust Symfony’s front controller, routing and security management in the way that SF tries to execute a request first, and if it fails, it passes control to the legacy code.

Christoph Reinartz in “Pattern Library meets Symfony” showed how did his team successfully migrate all their old unstructured CSS for Trivago, to The Pattern Library.

Remember the worst code you’ve ever seen. Then imagine an even worse one. That’s what Jan van Thoor showed us in his talk “Open Heart Surgery”. Trivago’s PHP code was a total mess, with all the mistakes you can make: totally mixed up MVC layers, hell of dependencies, non descriptive method/var names, useless comments, all the business logic stuffed in one, long, extremely complex method, etc. etc. Jan showed us how his team managed to refactor that mess by iterated process of demarking modules of code, restructuring them just enough to be able to unit test them, and only after that actually refactoring the code.

Also, during the conference SensioLabs DE announced their new tool: Deptrac. It allows you to define (in a single YAML file) the layers of your application (like services, controllers, repositories etc.) and the rules regarding which layers are allowed to depend on which ones. Deptrac analyses the code, reports dependencies violations and draws a graph of layer dependencies. They’ve just put an announcement on SF’s blog as well: symfony.com/blog/clean-software-architecture-with-deptrac

Best Regards,