Sebagian besar developer PHP di Indonesia mengenal Laravel lebih dulu. Yang jarang disadari, setiap kali Anda mengetik php artisan, yang berjalan adalah komponen Symfony Console. Objek Request yang Anda terima di controller Laravel pun merupakan turunan dari Symfony HttpFoundation. Artinya banyak dari kita sudah menjalankan kode Symfony setiap hari tanpa pernah memasangnya secara sadar.

Symfony framework adalah kerangka kerja PHP yang lahir jauh sebelum Laravel, dan sampai hari ini menjadi fondasi bagi framework lain. Namun pertanyaan apa itu Symfony framework punya jawaban yang sedikit tidak lazim, karena Symfony sebenarnya bukan satu benda.

Symfony Framework Adalah Komponen dan Kerangka Sekaligus

Symfony adalah dua hal yang dikemas dalam satu nama. Yang pertama adalah kumpulan paket PHP mandiri — dokumentasi resminya menyebutnya Symfony Packages — yang masing-masing menyelesaikan satu urusan spesifik dan bisa dipakai terpisah. Yang kedua adalah framework aplikasi web yang dirakit dari paket-paket tersebut.

Pembedaan ini bukan sekadar istilah. Anda bisa memasang satu komponen Symfony ke proyek PHP polos tanpa menyentuh frameworknya sama sekali. Butuh alat pembuat perintah terminal? Pasang Symfony Console saja. Butuh pembungkus objek untuk permintaan HTTP? Pasang HttpFoundation saja.

Halaman komponen resminya mencantumkan 384 paket. Cakupannya mulai dari komponen inti, bundle (paket yang menambahkan fungsi ke framework), sampai jembatan ke pustaka pihak ketiga.

Symfony dipublikasikan sebagai perangkat lunak bebas pada 18 Oktober 2005 oleh Fabien Potencier, dengan dukungan SensioLabs, sebuah perusahaan asal Prancis. Lisensinya MIT, artinya gratis dipakai termasuk untuk proyek komersial. Versi 1.0 baru menyusul pada Januari 2007. Repositori resminya di GitHub, yang menamai diri The Symfony PHP framework, tercatat mengumpulkan 31.134 bintang. Dari sisi rancangan, Symfony banyak mengambil inspirasi dari Spring Framework di dunia Java.

Kalau istilah framework sendiri masih terasa kabur, atau Anda ingin mundur satu langkah ke bahasa PHP yang menjadi dasarnya, dua bacaan itu bisa Anda dahulukan.

22 Paket Symfony yang Sudah Berjalan di Laravel Anda

Halaman resmi Symfony memuat daftar proyek yang memakai paketnya, lengkap dengan rinciannya. Untuk Laravel, jumlahnya 22 paket. Di antaranya Console, HttpFoundation, HttpKernel, Routing, EventDispatcher, Mailer, Cache, Yaml, Finder, Process, dan Translation.

Dua yang paling sering Anda sentuh sudah disebut di awal artikel. Perintah php artisan make:controller diproses Symfony Console, dan $request->query->get('halaman') di controller Laravel memanggil kode HttpFoundation. Laravel membangun lapisan sintaksnya sendiri di atas paket-paket itu, bukan menulis ulang dari nol.

Pola yang sama berlaku di luar Laravel. Drupal memakai komponen framework Symfony sejak versi 8, begitu pula Prestashop di ranah e-commerce.

Pemakai komponen Symfony: Laravel dengan 22 paket, Drupal sejak versi 8, dan Prestashop yang menyemat seri 6.4 LTS.Pemakai komponen Symfony: Laravel dengan 22 paket, Drupal sejak versi 8, dan Prestashop yang menyemat seri 6.4 LTS.

Di sinilah angka adopsi perlu dibaca dengan hati-hati. Survei State of PHP 2025 dari JetBrains menjaring 1.720 responden yang menyebut PHP sebagai bahasa utamanya. Hasilnya mencatat Laravel di 64%, WordPress di 25%, dan Symfony di 23%.

Angka 23% itu hanya menghitung yang memakai Symfony secara langsung. Kode Symfony sendiri ikut berjalan di dalam sebagian besar 64% yang memilih Laravel. Jejak nyatanya jauh lebih lebar daripada peringkat ketiga itu.

Alur Kerja Symfony: Request Masuk, Response Keluar

Seluruh permintaan ke aplikasi Symfony masuk lewat satu berkas: public/index.php. Berkas ini disebut front controller, yaitu satu pintu tunggal yang menerima semua permintaan sebelum diarahkan ke tujuan masing-masing. Tidak ada berkas PHP lain yang boleh diakses langsung dari browser.

Dari pintu itu, alurnya berjalan berurutan. Router membaca URL yang datang lalu mencocokkannya dengan daftar rute yang Anda daftarkan. Setelah cocok, Symfony memanggil controller yang bersangkutan. Controller mengerjakan logikanya, lalu mengembalikan sebuah objek Response. Objek itulah yang akhirnya dikirim ke browser.

Komponen HttpKernel yang mengorkestrasi keseluruhan langkah tersebut. Ia memancarkan event di tiap tahap, sehingga Anda bisa menyisipkan kode tanpa mengubah alur intinya.

Alur permintaan Symfony: masuk lewat public/index.php, diarahkan Router ke Controller, semuanya diatur HttpKernel.Alur permintaan Symfony: masuk lewat public/index.php, diarahkan Router ke Controller, semuanya diatur HttpKernel.

Sampai di sini ada satu hal yang perlu diluruskan, karena cukup sering disalahpahami. Symfony bukan framework MVC. Dokumentasi resminya mendefinisikan Symfony sebagai framework HTTP: tugas utama aplikasi adalah menafsirkan setiap permintaan dan mengembalikan sebuah tanggapan. Fabien Potencier menyatakan alasannya secara terbuka, bahwa menurutnya pola MVC tidak menggambarkan cara web bekerja.

Bukan berarti Anda dilarang menyusun kode secara MVC. Pemisahan menjadi controller, template, dan entitas basis data tetap lazim dan tetap didukung penuh. Yang membedakan, Symfony tidak memaksakannya — dokumentasinya menyebut hal itu secara eksplisit. Bila Anda ingin mendalami polanya sendiri, penjelasan MVC tersedia terpisah.

Isi Proyek Symfony Baru dan Cara Flex Menumbuhkannya

Proyek Symfony baru terasa nyaris kosong, dan itu memang disengaja. Struktur bawaannya ringkas: config/ menampung konfigurasi, src/ berisi kode aplikasi Anda, dan public/ menyimpan front controller. Sisanya templates/ untuk berkas tampilan, var/ untuk cache dan log, vendor/ untuk paket pihak ketiga, serta bin/ yang memuat bin/console.

Ada dua cara memulai. Lewat Symfony CLI, perintahnya satu baris:

Bash
symfony new proyek_saya \
    --version="8.1.*" --webapp

Lewat Composer, hasilnya sama dengan dua perintah:

Bash
composer create-project \
    symfony/skeleton:"8.1.*" proyek_saya
composer require webapp

Tanpa tambahan --webapp atau composer require webapp, yang Anda dapat adalah kerangka minimal — cocok untuk API, microservice, atau aplikasi baris perintah. Untuk menjalankannya di komputer sendiri, symfony server:start menyalakan server lokal di http://localhost:8000.

Yang membuat pola ini bekerja adalah Symfony Flex, sebuah plugin untuk Composer. Setiap kali Anda memasang paket yang punya recipe, Flex menjalankan skrip pemasangannya secara otomatis:

TEXT
$ composer require symfony/mailer
Symfony operations: 1 recipe (executing)
  - Configuring symfony/mailer
    Created "config/packages/mailer.yaml"
    Added environment variable defaults
    Registered the bundle in bundles.php

Berkas konfigurasi dibuat, variabel lingkungan ditambahkan ke .env, dan bundle didaftarkan — semuanya tanpa Anda sentuh manual. Menghapusnya dengan composer remove akan mengembalikan seluruh perubahan itu.

Konsekuensi dari rancangan ini: banyak hal yang Anda kira bawaan ternyata harus dipasang sendiri. Twig, mesin template resminya, baru tersedia setelah composer require symfony/twig-bundle. Sintaksnya memakai {{ ... }} untuk mencetak nilai dan {% ... %} untuk logika. Yang lebih penting, auto-escaping aktif sejak awal, sehingga masukan pengguna otomatis dinetralkan dan celah XSS tertutup tanpa Anda tambahkan apa pun.

Peta Versi Symfony dan PHP Minimum yang Dibutuhkan

Keputusan pertama saat memakai Symfony bukan soal fitur, melainkan soal versi. Alasannya, tiap versi menuntut PHP minimum yang berbeda dan punya masa dukungan yang berbeda pula.

VersiRilisPHP minDiperbaiki sampai
6.4 LTSNov 20238.1Nov 2026
7.4 LTSNov 20258.2Nov 2028
8.0Nov 20258.4Juli 2026
8.1 (stabil)Mei 20268.4Jan 2027

Kolom terakhir adalah batas perbaikan bug. Kedua versi LTS masih menerima perbaikan keamanan setahun lebih lama, yaitu sampai November 2027 untuk 6.4 dan November 2029 untuk 7.4.

Aturan yang menghasilkan tabel itu cukup sederhana. Symfony merilis versi minor setiap enam bulan, tepatnya pada Mei dan November, serta versi major setiap dua tahun. Versi biasa disokong delapan bulan saja. Versi LTS (Long-Term Support, dukungan jangka panjang) mendapat perbaikan bug selama tiga tahun, ditambah satu tahun perbaikan keamanan setelahnya.

Selisih itu terasa nyata. Symfony 8.0 dirilis pada 27 November 2025 dan berhenti didukung pada Juli 2026. Belum genap delapan bulan setelahnya, halaman rilis resminya sudah menandai versi tersebut sebagai tidak lagi dipelihara. Sementara 7.4 yang rilis di bulan yang sama masih akan menerima perbaikan bug sampai November 2028.

Peta versi Symfony: 6.4 LTS butuh PHP 8.1 dan 7.4 LTS butuh PHP 8.2, sedangkan 8.0 berhenti setelah delapan bulan.Peta versi Symfony: 6.4 LTS butuh PHP 8.1 dan 7.4 LTS butuh PHP 8.2, sedangkan 8.0 berhenti setelah delapan bulan.

Angka PHP minimum di tabel adalah syarat mutlak, bukan anjuran. Symfony 8.x menolak berjalan di PHP 8.3 ke bawah, dan tidak ada konfigurasi yang bisa melewatinya.

Rekomendasi praktisnya bergantung pada satu hal saja, yaitu versi PHP yang bisa Anda pakai. Bila server Anda menyediakan PHP 8.4, pilih Symfony 8.1. Bila PHP Anda 8.2 atau 8.3, pilih Symfony 7.4 LTS dan Anda aman sampai November 2028. Bila masih di PHP 8.1, satu-satunya pilihan adalah Symfony 6.4 LTS, yang perbaikan bugnya berakhir November 2026 — jadi rencanakan peningkatan PHP dari sekarang.

Kecenderungan memilih LTS ini bukan sekadar saran di atas kertas. PrestaShop 9.1.5 dirilis pada 18 Agustus 2026, dan masih menyematkan 48 dari 52 paket Symfony-nya ke seri 6.4. Padahal seri itu sudah berumur hampir tiga tahun. Bagi platform yang dipasang di ribuan toko, versi yang tenang lebih bernilai daripada versi yang baru.

Kelebihan Symfony untuk Proyek Jangka Panjang

  1. Masa dukungan yang terjadwal dan panjang: versi LTS memberi tiga tahun perbaikan bug dengan tanggal yang sudah diumumkan sejak hari rilis. Untuk aplikasi internal perusahaan yang jarang disentuh setelah selesai, kepastian tanggal ini lebih berharga daripada fitur terbaru.

  2. Komponen yang bisa dipakai terpisah: Anda tidak harus memakai seluruh framework. Satu paket bisa masuk ke proyek warisan yang sudah berjalan, tanpa penulisan ulang. Ini juga alasan komponennya banyak diadopsi framework lain.

  3. Konfigurasi yang terbuka sampai detail: hampir setiap perilaku Symfony bisa diganti lewat berkas konfigurasi atau layanan pengganti. Pada aplikasi dengan aturan bisnis tidak lazim, keleluasaan ini menghemat banyak akal-akalan.

  4. Dokumentasi resmi yang rapi dan berversi: setiap versi punya dokumentasinya sendiri, sehingga contoh yang Anda baca cocok dengan versi yang Anda pasang. Ini menghindarkan kebingungan yang biasa muncul saat menyalin contoh dari sumber acak.

  5. Ekosistem yang sudah teruji lintas produk: paket yang sama dipakai Drupal, Prestashop, dan Laravel. Bug yang muncul di salah satu ekosistem cepat ditemukan dan diperbaiki, karena penggunanya datang dari banyak arah.

Kelemahan dan Hal yang Perlu Anda Pertimbangkan

  1. Kurva belajar yang lebih curam: karena hampir tidak ada yang otomatis, Anda harus tahu paket apa yang dibutuhkan sebelum memasangnya. Pada Laravel, sebagian besar keputusan itu sudah diambilkan. Untuk proyek yang harus jadi dalam dua pekan, keleluasaan Symfony justru memperlambat.

  2. Versi non-LTS hanya disokong delapan bulan: pasang versi stabil terbaru tanpa memperhatikan jadwalnya, dan dalam kurang dari setahun aplikasi Anda berjalan tanpa dukungan. Ini menuntut disiplin pemeliharaan yang tidak semua tim punya.

  3. PHP 8.4 belum tersedia di semua hosting: seri Symfony 8 menuntut PHP 8.4, sementara banyak layanan hosting di Indonesia masih menyediakan sampai 8.2 atau 8.3. Anda perlu memastikan ini sebelum memilih versi, bukan sesudah.

  4. Komunitas berbahasa Indonesia jauh lebih kecil: adopsinya 23% berbanding 64% milik Laravel. Jumlah tutorial, forum tanya jawab, dan calon anggota tim yang menguasai Symfony di Indonesia jelas lebih sedikit. Saat menemui persoalan spesifik, sumber rujukan Anda hampir selalu berbahasa Inggris.

  5. Konfigurasi bawaan yang bertele-tele untuk proyek kecil: aplikasi satu halaman formulir tetap membutuhkan struktur direktori, berkas rute, dan definisi layanan yang sama. Untuk kebutuhan sesederhana itu, strukturnya terasa berlebihan.

Menjalankan Symfony di Hosting: public/ Bukan public_html

Persoalan paling sering muncul saat Symfony dipindahkan ke shared hosting, dan penyebabnya satu. Letak document root berbeda, yaitu folder yang dianggap web server sebagai akar situs. Symfony menempatkannya di public/, sedangkan cPanel mengarahkan domain ke public_html.

Bila seluruh isi proyek diunggah apa adanya, dua hal buruk terjadi sekaligus. Situs tidak berjalan karena index.php berada satu tingkat lebih dalam. Yang lebih berbahaya, folder config/ beserta berkas .env yang memuat kata sandi basis data menjadi bisa diakses dari browser.

Akar situs Symfony: menunjuk folder proyek membuka .env ke browser, menunjuk folder public menutup rapat semuanya.Akar situs Symfony: menunjuk folder proyek membuka .env ke browser, menunjuk folder public menutup rapat semuanya.

Ada dua jalan keluar. Yang paling bersih, arahkan document root domain ke folder public/ lewat pengaturan domain di panel hosting. Bila panel Anda tidak mengizinkannya, Symfony menyediakan paket symfony/apache-pack yang memasang aturan pengalihan untuk Apache secara otomatis.

Setelah berkas berada di tempatnya, tiga langkah berikut menentukan aplikasi berjalan wajar atau tidak:

Bash
composer install --no-dev --optimize-autoloader
APP_ENV=prod APP_DEBUG=0 \
    php bin/console cache:clear
chmod -R 775 var/

Perintah pertama memasang paket tanpa alat pengembangan sekaligus mempercepat pemuatan kelas. Perintah kedua menyiapkan cache untuk mode produksi. Yang ketiga memastikan folder var/ bisa ditulis, karena di situlah cache dan log disimpan.

Perhatikan bahwa dua perintah pertama membutuhkan akses baris perintah. Di layanan web hosting berbasis cPanel, versi PHP dapat Anda pilih per domain lewat MultiPHP Manager, dan Terminal tersedia bila diaktifkan. Untuk aplikasi yang sering diperbarui, VPS Indonesia memberi akses penuh sehingga proses ini bisa dijalankan tanpa batasan.

Bila yang Anda butuhkan hanyalah mencoba Symfony lewat panel kontrol tanpa menyentuh terminal, panduan cara install Symfony melalui Softaculous memuat langkah-langkahnya secara terpisah.

Symfony atau Laravel: Dasar Memilih yang Konkret

Perbandingan fitur jarang menyelesaikan perdebatan ini, karena keduanya mampu mengerjakan hal yang sama. Tiga pertanyaan berikut lebih menentukan.

Berapa lama aplikasi harus hidup tanpa peremajaan besar? Bila jawabannya di atas dua tahun dan tim Anda kecil, jadwal LTS Symfony yang tiga tahun memberi ruang bernapas yang jelas. Untuk aplikasi yang memang direncanakan ditulis ulang dalam setahun, keunggulan itu tidak terpakai.

Seberapa banyak konvensi yang bersedia Anda terima? Laravel menetapkan banyak keputusan di muka dan Anda bergerak cepat selama mengikutinya. Symfony menyerahkan keputusan itu kepada Anda, yang berarti lebih lambat di awal namun lebih lentur saat aturan bisnisnya tidak lazim.

Siapa yang akan merawatnya setelah Anda? Di Indonesia, mencari pengembang Laravel jauh lebih mudah. Bila aplikasi akan diserahkan ke tim lain atau ke klien, ketersediaan orang sering lebih menentukan daripada keunggulan teknis. Untuk kebutuhan yang lebih ringan lagi, CodeIgniter tetap menjadi pilihan yang masuk akal.

Sebagai patokan angka: untuk proyek di bawah tiga bulan pengerjaan dengan tim di bawah tiga orang, Laravel biasanya lebih hemat waktu. Di atas itu, terutama bila aplikasinya akan dipakai bertahun-tahun, Symfony mulai membayar kembali usaha belajarnya.

Pertanyaan yang Sering Muncul

Apakah Symfony framework yang bagus?

Bagus untuk sebagian kebutuhan, dan kurang tepat untuk sebagian lainnya. Kekuatannya ada pada aplikasi berumur panjang dengan aturan bisnis tidak standar, karena jadwal LTS tiga tahun dan konfigurasi yang terbuka sampai detail. Kelemahannya terasa pada proyek kecil yang harus selesai cepat, karena hampir tidak ada keputusan yang sudah diambilkan untuk Anda.

Apakah Symfony masih dipakai pada 2026?

Masih, meski minatnya menyusut. Survei State of PHP 2025 mencatat 23% responden memakainya, dan repositori resminya tetap merilis pembaruan rutin. Versi 8.1.5, 7.4.17, dan 6.4.44 semuanya terbit pada 22 Agustus 2026. Perlu diingat pula bahwa komponennya berjalan di dalam Laravel, Drupal, dan Prestashop, sehingga jumlah pemakai tidak langsungnya jauh melampaui angka 23% tersebut.

Apakah Symfony framework MVC?

Bukan, setidaknya bukan menurut perancangnya. Symfony mendefinisikan diri sebagai framework HTTP yang menerjemahkan permintaan menjadi tanggapan. Anda tetap bebas menyusun kode dengan pola MVC dan hal itu lazim dilakukan, tetapi Symfony tidak mewajibkannya.

Apakah Symfony gratis?

Ya. Symfony berlisensi MIT, salah satu lisensi open source yang paling longgar, sehingga bebas dipakai termasuk untuk produk komersial tanpa biaya lisensi. Yang berbayar adalah layanan tambahan dari SensioLabs, seperti alat analisis kode SymfonyInsight dan kontrak dukungan resmi. Frameworknya sendiri tidak punya versi berbayar.

Versi Symfony mana yang sebaiknya dipakai?

Tentukan dari versi PHP yang tersedia di server Anda. PHP 8.4 mengarah ke Symfony 8.1, PHP 8.2 atau 8.3 ke Symfony 7.4 LTS, dan PHP 8.1 ke Symfony 6.4 LTS. Bila proyeknya akan dirawat bertahun-tahun, pilih versi LTS meski bukan yang terbaru.

Apakah Symfony bisa berjalan di shared hosting?

Bisa, dengan tiga syarat. Versi PHP di hosting harus memenuhi minimum versi Symfony yang dipilih, dan document root harus bisa diarahkan ke folder public/. Syarat ketiga, Anda membutuhkan akses baris perintah untuk menjalankan composer install serta membersihkan cache. Bila yang terakhir tidak terpenuhi, unggah folder vendor/ hasil pemasangan di komputer lokal.

Kesimpulan

Symfony adalah kumpulan komponen PHP sekaligus framework web yang dibangun di atasnya. Pembedaan itu menjelaskan mengapa kodenya bisa Anda temukan di dalam Laravel, Drupal, maupun Prestashop. Alurnya berjalan sebagai permintaan yang diterjemahkan menjadi tanggapan lewat satu front controller, bukan sebagai pola MVC seperti yang sering diasumsikan.

Bila Anda memutuskan memakainya, keputusan yang paling menentukan justru soal versi. Cocokkan lebih dulu versi PHP di server dengan tabel di atas, lalu pilih LTS bila aplikasinya akan dirawat lama. Symfony masuk akal untuk aplikasi berumur panjang dengan aturan bisnis yang tidak standar, dan kurang masuk akal untuk pekerjaan yang harus selesai dalam hitungan pekan. Semoga artikel ini membantu.