Framework PHP
Setiap framework PHP punya tugas yang paling dikuasainya.
Kami membangun, menyelamatkan, dan meng-host aplikasi di semuanya – dan di PHP murni yang tidak pernah memakai framework – dengan tim yang telah menulis PHP selama dua puluh lima tahun.
PHP
Laravel
Symfony
CodeIgniter
Yii
CakePHP
Framework mana yang cocok untuk proyek Anda
Jawab dua pertanyaan. Setiap jalur berakhir di tempat kami akan memulai – dan menyebutkan kapan kami akan memilih yang lain.
Dari mana Anda memulai?
Proyek baru
Apa yang paling penting?
Sistem besar yang akan dikerjakan beberapa tim selama bertahun-tahun
Tempat kami akan memulai
Symfony
Konfigurasi eksplisit, container dependency injection, rilis dukungan jangka panjang, dan Doctrine untuk data. Strukturnya tetap kokoh saat developer kelima bergabung.
Pertimbangkan juga Laminas jika perusahaan sudah menjalankan kode Zend Framework.
Produk yang harus segera dirilis, dengan tim kecil
Tempat kami akan memulai
Laravel
Autentikasi, antrean, email, penjadwalan, dan ORM yang ekspresif langsung tersedia, dengan satu konvensi untuk semuanya.
Laravel di EGPHPAPI atau layanan kecil dengan satu tugas
Tempat kami akan memulai
Slim
Routing, middleware, dan request PSR-7 standar, tanpa apa pun yang tidak Anda minta. Anda yang memilih lapisan database dan container-nya.
Jika API akan berkembang menjadi produk lengkap, Laravel atau Symfony menghindarkan pembangunan ulang nanti.
Aplikasi kecil di server sederhana
Tempat kami akan memulai
CodeIgniter
Jejak kecil, sedikit konfigurasi, dan dokumentasi yang jelas. Berjalan baik saat sumber daya terbatas.
Banyak layar data, dibangun cepat dari database
Tempat kami akan memulai
Yii · CakePHP
Yii menghasilkan model dan layar CRUD dengan Gii; CakePHP menghasilkannya dengan bake dari konvensinya. Keduanya mengubah skema menjadi layar yang berfungsi dengan cepat.
Overhead framework paling kecil di setiap permintaan
Tempat kami akan memulai
Phalcon
Framework ini adalah ekstensi C yang dikompilasi, sehingga sangat sedikit PHP yang berjalan per permintaan. Ekstensi itu harus terpasang di server – kami memasangnya di server kami.
Banyak shared hosting tidak mengizinkan ekstensi PHP. Periksa dulu sebelum memilihnya.
Aplikasi yang sudah ada
Dibangun dengan apa?
PHP murni tanpa framework, atau versi PHP yang sangat lama
Tempat kami akan memulai
Selamatkan dulu
Kami membuatnya aman dan mutakhir sebelum hal lain, lalu bersama-sama memutuskan apakah framework layak dipakai.
Cara penyelamatan berjalanDibangun di atas framework, dan berfungsi
Tempat kami akan memulai
Pertahankan framework-nya
Kami meng-upgrade, mengamankan, dan mengembangkannya di framework tempat aplikasi itu ditulis. Menulis ulang adalah pilihan terakhir, bukan yang pertama.
Dibangun di atas framework yang ingin Anda tinggalkan
Tempat kami akan memulai
Migrasi bertahap
Aplikasi lama dan baru berjalan berdampingan, dan route dipindahkan satu per satu sementara bisnis tetap berjalan.
Cara migrasi berjalanBerdampingan
Apa setiap framework itu, apa keunggulan terbesarnya, dan kapan kami akan berpikir dua kali. Tidak ada yang salah; masing-masing tepat untuk pekerjaan yang berbeda.
| Framework | Apa itu | Lapisan data | Paling unggul di | Pikirkan ulang jika |
|---|---|---|---|---|
| Symfony | Framework full-stack dan komponen yang dapat digunakan ulang | Doctrine ORM | Sistem besar berumur panjang, dengan rilis dukungan jangka panjang | Situs kecil harus diluncurkan minggu ini |
| Laravel | Framework full-stack | Eloquent | Merilis produk dengan cepat, dengan antrean, autentikasi, dan email bawaan | Anda ingin setiap bagian dirangkai secara eksplisit |
| CodeIgniter | Framework full-stack yang ringan | Query builder dan model sederhana | Jejak kecil di server sederhana | Proyek membutuhkan ekosistem paket yang besar |
| Yii | Framework full-stack | Active Record | Layar padat data yang dihasilkan dengan Gii, dan caching | Tim Anda belum mengenalnya; komunitasnya lebih kecil |
| CakePHP | Framework full-stack | CakePHP ORM | Konvensi di atas konfigurasi, dan kode yang dihasilkan dari skema | Aplikasi melawan konvensinya di setiap langkah |
| Laminas | Komponen, framework MVC dan middleware; penerus Zend Framework | laminas-db atau Doctrine | Sistem bisnis yang sudah dibangun di atas Zend Framework | Proyek kecil yang baru ingin bergerak cepat |
| Slim | Mikro-framework | Tidak ada bawaan – Anda yang memilih | API dan layanan kecil | Aplikasi membutuhkan sesi, formulir, dan panel admin sejak hari pertama |
| Phalcon | Framework full-stack yang dikirim sebagai ekstensi C | Phalcon ORM dengan PHQL | Overhead per permintaan yang sangat rendah | Host Anda tidak dapat memasang ekstensi PHP |
Laravel sendiri dibangun di atas beberapa komponen Symfony, dan sebagian besar framework ini berbagi standar PSR yang sama – memindahkan kode di antara mereka tidak seberat kelihatannya.
PHP lama, kembali dalam kondisi prima
Kode yang ditulis bertahun-tahun lalu masih menghasilkan uang bagi banyak bisnis. Kami membuatnya aman dan mutakhir tanpa mematikannya.
- $id = $_GET['id'];- $r = mysql_query("SELECT * FROM orders WHERE id = $id");- $order = mysql_fetch_assoc($r);+ $stmt = $pdo->prepare('SELECT * FROM orders WHERE id = ?');+ $stmt->execute([(int) $_GET['id']]);+ $order = $stmt->fetch(PDO::FETCH_ASSOC);
Baca dan jalankan
Salinan aplikasi yang berjalan di server terkini, dan daftar tertulis tentang apa saja yang rusak.
Tes untuk yang sudah berfungsi
Tes yang merekam apa yang dilakukan halaman saat ini, sehingga perubahan yang merusak salah satunya langsung tertangkap.
PHP di-upgrade bertahap
Satu versi demi satu versi, dengan Rector untuk perubahan mekanis dan PHPStan untuk menemukan yang terlewat.
Keamanan dulu
Prepared statement, output yang di-escape, password di-hash ulang, serta sesi dan unggahan yang dikunci rapat.
Lalu, jika sepadan, sebuah framework
Fitur baru masuk ke framework di samping kode lama, dan halaman lama dipindahkan saat disentuh.
Pindah antar-framework, satu route demi satu route
Kami tidak menghentikan bisnis demi penulisan ulang. Aplikasi lama dan baru berada di belakang satu server web, dan setiap route dipindahkan saat penggantinya siap.
-
/api/ordersAplikasi baru Dipindahkan -
/accountAplikasi baru Dipindahkan -
/checkoutAplikasi baru Dalam pengujian -
/reportsAplikasi lama Menunggu -
/adminAplikasi lama Menunggu
Peralihannya cukup satu baris per route
# nginx
location /api/orders { proxy_pass http://new; }
location /account { proxy_pass http://new; }
location /checkout { proxy_pass http://new; }
location / { proxy_pass http://old; }
Route yang bermasalah dikembalikan ke aplikasi lama dengan perubahan satu baris yang sama, sementara kami memperbaikinya.
Apa yang dibutuhkan framework dari server
Framework apa pun yang Anda pilih, inilah yang harus disediakan hostingnya.
Runtime
- PHP 8.4 lewat PHP-FPMOPcache dan JIT aktif, sehingga banyak berkas framework dikompilasi sekali dan dipakai ulang.
- ComposerDukungan Composer penuh, jadi instalasi produksi dengan autoloader teroptimasi cukup satu perintah.
Data
- Basis data relasionalMySQL, MariaDB, dan PostgreSQL, dipasang, ditala, dan dicadangkan.
- RedisCache, sesi, dan antrean di memori, untuk bagian framework yang meminta hal yang sama berulang kali.
Pekerjaan latar belakang dan akses
- Worker antrean di bawah SupervisorPekerjaan latar belakang berjalan sebagai proses terawasi, dimulai ulang jika berhenti dan pada setiap rilis.
- Akses SSHUntuk deploy, migrasi, dan perintah konsol framework.
Sebelum memindahkan aplikasi framework ke sini
Enam pemeriksaan yang menangkap sebagian besar peluncuran gagal. Buka satu untuk melihat mengapa itu penting.
Samakan versi PHP
Baca persyaratan php di composer.json dan jalankan composer check-platform-reqs di tujuan, agar ekstensi yang hilang muncul sebelum peluncuran, bukan saat peluncuran.
Arahkan document root ke folder public
Framework seperti Laravel dan Symfony hanya membuka folder public ke web. Semua yang lain, termasuk berkas lingkungan, tetap di luarnya.
Pindahkan konfigurasi dan rahasia, bukan kode
Kata sandi basis data dan kunci ada di pengaturan lingkungan atau berkas di luar web root, bukan di repositori.
Periksa apa yang harus bisa ditulis
Cache, log, dan unggahan butuh folder yang bisa ditulis aplikasi, dan tidak ada yang lain yang boleh bisa ditulis.
Bangun ulang cache di server
Jalankan perintah cache framework setelah setiap deploy, karena cache rute dan konfigurasi dibuat untuk satu mesin dan satu set path.
Daftar pekerjaan latar belakang
Catat worker antrean dan tugas terjadwal yang diharapkan aplikasi, agar masing-masing mendapat proses terawasi atau entri cron.

Ceritakan apa yang Anda jalankan
Framework, versi PHP, dan apa yang Anda khawatirkan tentangnya sudah cukup untuk memulai. Setiap proyek diberi penawaran setelah percakapan singkat.