Short guide explaining how to migrate from Silex to Symfony 4+ Flex #8678
Comments
|
|
I should be migrating a project pretty soon. Not that these are particularly hard to migrate in my case, but my main concerns are:
|
My First Upgrade from Silex 2 to Symfony 4 / FlexThis is just a few notes on the way I approached my first cut-over of a project from Silex to Symfony 4 & Flex. The most important thing I think I would point out for those of us very used to Silex is:
Stuff might feel "different" or "unnatural" at first, but you quickly adapt and grow attached to the change. Before you go too far, give this a good read: … don't try to "get" everything now, but having some of it in your mental view will help a lot of this "click" pretty quickly. Next thing I found valuable was to Then I did a bunch of
A huge wall you can hit at this point is copying these over, pressing F5 in your browser and watching everything crash. What I chose to do at this point was to edit my App\:
resource: '../src/*'
exclude: '../src/{Entity,Migrations,Repository,Tests}'
App\Controller\:
resource: '../src/Controller'
tags: ['controller.service_arguments'] That stopped the DI compiler from scanning every class in HUGE NOTE: This approach circumvents a lot of what makes autowiring awesome, you wouldn't normally do this on a new project, but it also allows you to slowly progress though your migration without too much pain. Important tip, you two best friends at this point in time:
Next, I went through each of my own project's service providers and added the services one by one (as needed) to For example, a Twig extension's runtime class: App\Twig\Extension\MyRuntime:
autowire: true
tags:
- { name: twig.runtime } Once you have your base serviced looking like they're wired up, move onto your controllers. I enabled them in my App\Controller\MyFirstController:
tags: ['controller.service_arguments'] The allowed me to step through each one, get it loading and move on. Depending on dependencies you might have to jump through a few iterations of this process. Depending on the size and complexity of your project, this should get a lot of them close to cut-over. My first one was less than two hours to migrate. |
We have an enterprise-level silex app and looked a way to convert only the framework layer about 2 weeks ago.
|
Middlewares are just event listeners under the hood. You should be able to convert all of your middlewares to event subscribers before migrating to Symfony. Examples: |
I have prepared a small script to export routes from a Silex application. Maybe this is helpful for someone here: https://gist.github.com/derrabus/4d7b7b3a6ffc0c1ccc1037ce2a66b13c |
Learned today about SILEX dead sentece. If you don't like Synfony 4 I think SLIM is a great alternative very similar to Silex. Is micro, is based on Pimple, it's PSR7, has middleware support, have a great community. I think would very easy to migrate from silex to slim, maybe easier than to Symfony 4. |
@FbN not sure about that "easier to SLIM than Symfony 4/Flex":
There are probably a lot more points i'm not even aware of, yet. EDIT: I'm not really awake, yet, so i forgot to think about how these "difficult" migration steps actually compare to what one has to do to migrate to Symfony 4/FLEX. |
Please don't turn this thread into a framework battle. |
I was thinking I would migrate to Symfony 4, but it so much complex just a few routes and I have to add in yml, services, console, do not need it at all, it is already overloaded by using twig anyway, I will keep Silex, it is complete as it is. |
Shall we close here? As time passes, this is less and less needed. |
I agree. Let's close this as "won't fix". Thanks! |
Silex ends as a project in June 2018. Lots of people still using it. Even if Sf4 + Flex ideas are pretty similar to Silex, it takes some time to learn the new concepts and philosophy.
Could we prepare a short upgrading guide for Silex users? It wouldn't be a comprehensive and ultra detailed guide, just a quick overview of the main changes: where to put the app config, how to define services, controllers + routes with annotations, etc.
If you are a Silex developer, please add a comment here telling us what would be the most important things to explain. Thanks!
The text was updated successfully, but these errors were encountered: