Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
Switching off legacy code using one Symfony com...
Search
Sponsored
·
Ship Features Fearlessly
Turn features on and off without deploys. Used by thousands of Ruby developers.
→
Loulier Guillaume
November 07, 2023
Programming
160
1
Share
Switching off legacy code using one Symfony command at a time
Loulier Guillaume
November 07, 2023
More Decks by Loulier Guillaume
See All by Loulier Guillaume
La recherche sémantique à l'ère de l'IA, mirage ou miracle ?
guikingone
0
17
Demandez et votre application répondra, la recherche sémantique avec PHP et Meilisearch
guikingone
1
110
Building a semantic search experience using PHP and Meilisearch
guikingone
0
230
Symfony UX et le frontend
guikingone
1
94
K6, stresser son application en douceur
guikingone
1
96
Need to search through your data? Heard about Meilisearch?
guikingone
1
280
Meilisearch
guikingone
1
150
SQLite en production ? Et si vous réévaluiez vos options ?
guikingone
1
1.2k
Dagger, la CI, autrement
guikingone
1
300
Other Decks in Programming
See All in Programming
「接続」—パフォーマンスチューニングの最後の一手 〜点と点を結ぶ、その一瞬のために〜
kentaroutakeda
5
2.5k
Vibe하게 만드는 Flutter GenUI App With ADK , 박제창, BWAI Incheon 2026
itsmedreamwalker
0
540
AI時代の脳疲弊と向き合う ~言語学としてのPHP~
sakuraikotone
1
1.8k
Symfony + NelmioApiDocBundle を使った スキーマ駆動開発 / Schema Driven Development with NelmioApiDocBundle
okashoi
0
270
まかせられるPM・まかせられないPM / DevTech GUILD Meetup
yusukemukoyama
0
110
PCOVから学ぶコードカバレッジ #phpcon_odawara
o0h
PRO
0
230
年間50登壇、単著出版、雑誌寄稿、Podcast出演、YouTube、CM、カンファレンス主催……全部やってみたので面白さ等を比較してみよう / I’ve tried them all, so let’s compare how interesting they are.
nrslib
4
720
Nuxt Server Components
wattanx
0
260
ローカルで稼働するAI エージェントを超えて / beyond-local-ai-agents
gawa
2
260
Running Swift without an OS
kishikawakatsumi
0
380
Codex CLI でつくる、Issue から merge までの開発フロー
amata1219
0
330
仕様漏れ実装漏れをなくすトレーサビリティAI基盤のご紹介
orgachem
PRO
8
5.1k
Featured
See All Featured
Statistics for Hackers
jakevdp
799
230k
Scaling GitHub
holman
464
140k
Introduction to Domain-Driven Design and Collaborative software design
baasie
1
720
Building a Scalable Design System with Sketch
lauravandoore
463
34k
Visual Storytelling: How to be a Superhuman Communicator
reverentgeek
2
500
Visualization
eitanlees
150
17k
How Fast Is Fast Enough? [PerfNow 2025]
tammyeverts
3
520
Distributed Sagas: A Protocol for Coordinating Microservices
caitiem20
333
22k
JAMstack: Web Apps at Ludicrous Speed - All Things Open 2022
reverentgeek
1
410
How to optimise 3,500 product descriptions for ecommerce in one day using ChatGPT
katarinadahlin
PRO
1
3.5k
brightonSEO & MeasureFest 2025 - Christian Goodrich - Winning strategies for Black Friday CRO & PPC
cargoodrich
3
680
JavaScript: Past, Present, and Future - NDC Porto 2020
reverentgeek
52
5.9k
Transcript
Switching off legacy code using one Symfony command at a
time
Greetings
Hellcome Guillaume Loulier / @Guikingone Lead developer @SensioLabs Works mainly
with PHP and Rust Sometimes, I break things, especially legacy ones (and I like that)
Summary 01 - Legacy code is fun 02 - Migrating,
a far far away dream 04 - Symfony to the rescue 05 - Wrapping up 01
Legacy code is fun
Well, it should
Diving into the joke Refu*toring - The process of taking
a well-designed piece of code and, through a series of small, reversible changes, making it completely unmaintainable by anyone except yourself. Jason Gorman
Let the fun begin A legacy code is just an
abandoned one that generate revenues Maintaining legacy code should be easy At least, until it breaks Never needed to migrate PHP 5 code?
Dealing with technical debt Technical debt is ambiguous Yesterday code
is already outdated, sorry Need to migrate it? Bon chance
Keep dreamin’
I made a dream
Time for a wishlist Tracking, being aware of changes, updating
and deleting A new interface? For which use case? What about this method arguments type? Code spread across repositories?
Sadly What about using a dedicated channel? Or using trigger_error?
Or tools like Sentry, OpenTelemetry and many more? What if we’re in a special architecture?
Symfony?
Well…
The full experience Symfony brings a lot of components Could
we bring them together to help us? Look at Rector, PHPStan and more! What if we could “track & switch off” files?
Time to “Switchoff” Built on top of Symfony components and
nikic/PHP-Parser (chief kiss) Attributes for the win! Analyze, check, switch off, repeat Could be used via the CLI / CI
Want a demo?
What’s next?
To sum it up Handling migration is hard, not to
say boring Symfony could ease the process but lack of tools Relying on a framework is a recipe for failure Each project has its own rules / flaws
What about switchoff? Not fully stable (for now) A Symfony
bundle? (Already planned) An HTML dashboard What about a PHPStan / Rector bridge?
Wrapping up