PHPStan WordPress dan codebase Laravel sama-sama cocok untuk static analysis: PHPStan membaca kode tanpa menjalankan aplikasi penuh seperti unit test. Ondřej Mirtes merilis 2.3.0 pada 1 Oktober 2026, lalu mempublikasikan ulasan teknis 6 Oktober 2026 tentang kecepatan, Turbo, cache, dan variabel tak terpakai.
Namun banyak tim plugin di Indonesia menjalankan pemeriksaan static berulang sebelum commit atau di CI—update ini relevan bila waktu tunggu PHPStan jadi bottleneck, bukan karena WordPress di browser tiba-tiba lebih cepat.
Highlight
PHPStan 2.3: Static Analysis untuk Laravel dan Plugin WordPress
- 2.3.0 (1 Okt 2026): engine, cache, Turbo diperluas; unused-variable rules butuh bleeding edge saat rilis blog.
- Benchmark Mirtes: source WordPress 60,51s (2.1.33) → 7,93s (2.3.0, Turbo ON)—lingkungan M1 Pro, bukan plugin Anda.
- Turbo hadir sejak 2.2.6; binary C++ opsional dibundel Composer bila runtime kompatibel.
- Laravel: Larastan; WordPress: extension/stubs—bukan plain PHPStan saja.
- PHPStan melengkapi PHPUnit/Pest dan PHPCS/WPCS, bukan menggantikannya.
Apa Itu PHPStan dan Pembaruan 2.3?

PHPStan memeriksa tipe, alur data, dan pola kode PHP sebelum runtime. Output-nya daftar error potensial—bukan jaminan bug production, melainkan sinyal awal yang lebih murah daripada debugging di server.
Rilis 2.3 menekankan performa: rewrite internal scope/type narrowing, result cache yang lebih pintar saat dependency Composer berubah, perluasan PHPStan Turbo, serta rule unused variable (variable.unused, assign.unused, dan identifier terkait di blog resmi).
Instalasi umum lewat Composer sebagai dev dependency; entry point vendor/bin/phpstan analyse mengikuti Getting Started. Bila proyek sudah memakai Larastan atau paket WordPress, biarkan Composer menyelesaikan satu graf dependency—jangan memasang versi PHPStan terpisah yang bentrok.
Benchmark WordPress: Konteks Angka «7,5×»
Menurut pengujian Mirtes pada MacBook Pro M1 Pro (~5 tahun), pemeriksaan source WordPress membutuhkan 60,51 detik dengan PHPStan 2.1.33 (Desember 2025).
Pada 2.3.0 (Oktober 2026): Turbo OFF 19,47 detik; Turbo ON 7,93 detik. Rasio ~7,6×; penulis membulatkan angka presentasi menjadi «hingga 7,5×».
Yang menjadi lebih cepat hanya waktu run PHPStan, bukan loading halaman WordPress. Plugin kecil di laptop Windows dengan level tinggi bisa jauh lebih lambat atau lebih cepat.
| Versi PHPStan | Turbo | WordPress source (Mirtes) | Catatan |
|---|---|---|---|
| 2.1.33 | — | 60,51 dtk | Des 2025 |
| 2.3.0 | OFF | 19,47 dtk | Engine/cache sudah lebih cepat |
| 2.3.0 | ON | 7,93 dtk | M1 Pro, satu mesin |
Turbo OFF 19,47 detik saja sudah jauh di bawah 60,51 detik—speedup bukan hanya dari ekstensi C++.
Turbo, Result Cache, dan Engine Internal
Turbo memindahkan bagian hot path ke ekstensi C++ (.so/.dll) yang ikut dalam paket phpstan/phpstan; CLI dapat me-restart proses dengan extension bila kompatibel. Turbo pertama kali hadir di 2.2.6 (26 Juli 2026); 2.3 memperluas cakupan kelas yang Turbo ganti di hot path.
PHPStan tetap jalan tanpa Turbo—fallback PHP murni. Anda perlu mengecek kompatibilitas OS/CPU di dokumentasi terbaru; jangan asumsikan semua hosting CI mendukung binary yang sama.
Result cache menyimpan hasil run sebelumnya dan pohon dependency; perubahan file hanya memicu ulang bagian yang perlu. Rilis 2.3 memperbaiki invalidation saat dependency Composer berubah agar tidak selalu full re-analyse. Cache CI butuh langkah simpan/restore eksplisit di workflow—bukan otomatis lintas runner tanpa konfigurasi (Result Cache).
Variabel Tak Terpakai dan Bleeding Edge
2.3 menambah deteksi alur data untuk variabel, key array, parameter closure, dan skenario terkait. Contoh sederhana:
$ttl = 3600;
// $ttl tidak pernah dibaca — PHPStan dapat melaporkan variable.unused
Artikel rilis menyatakan rule unused variable membutuhkan bleeding edge—upgrade ke 2.3 saja belum menjamin rule baru aktif tanpa mengikuti konfigurasi bleeding edge terbaru di dokumentasi PHPStan. Bleeding edge bukan «software tidak stabil»; itu saluran rule yang akan masuk major berikutnya.
Perbaikan generic inference tertentu juga bergantung bleeding edge saat publikasi blog; PHPStan sudah lama mendukung generics—yang baru adalah presisi inference.
Setup PHPStan di Laravel (Larastan)
Laravel punya facade, container, dan Eloquent dinamis—plain PHPStan menghasilkan false positive. Larastan bootstraps container Laravel agar tipe tertentu terbaca; ini extension komunitas, bukan paket resmi Laravel core.
Sebelum install, cocokkan versi PHP, Laravel, dan Larastan di README repo—requirement berubah antar rilis. Alur umum: pasang Larastan sebagai dev dependency, buat phpstan.neon dengan level realistis, arahkan paths ke app/tests, jalankan analyse, perbaiki error nyata, gunakan baseline untuk legacy bila perlu.
parameters:
level: 5
paths:
- app
- tests
Level 5 hanya contoh; legacy code sering mulai lebih rendah lalu naik bertahap (Rule Levels). Baseline (--generate-baseline) menyimpan error lama agar CI fokus pada kode baru—bukan menghapus utang teknis.
Bila Anda memilih stack Laravel alih-alih CMS, bandingkan kebutuhan operasional dengan artikel WordPress vs Laravel sebelum menginvestasikan toolchain static analysis.
Setup PHPStan untuk Plugin dan Tema WordPress
WordPress memakai fungsi global (add_action, get_option), hook, dan pola procedural. Tanpa stubs, PHPStan melaporkan «function not found» padahal kode valid—solusi utamanya stubs/extension, bukan ignore massal.
phpstan-wordpress mengintegrasikan stubs dan extension return type; wordpress-stubs menyediakan deklarasi API core. Cek status maintenance, commit, dan issue terbuka sebelum mengadopsi—maintainer pernah memperingatkan sustainability; itu sinyal evaluasi, bukan otomatis «abandoned».
Konfigurasi sehat: analyse hanya direktori plugin/tema Anda, jangan seluruh core WordPress atau vendor pihak ketiga sebagai best practice. Plugin tanpa Composer tetap bisa menambahkan Composer hanya untuk dev tools; runtime production tidak wajib autoload Composer bila arsitektur plugin tidak memerlukannya.
Plugin dan tema custom sering hidup berdampingan dengan stack headless atau framework front-end—baca Next.js vs WordPress untuk website bisnis bila Anda mempertimbangkan pemisahan front-end dari admin WordPress.
Testing, PHPCS, dan CI Bersama PHPStan
PHPStan menjawab «apakah kode secara statis konsisten?» PHPUnit/Pest menjawab «apakah behavior sesuai expectation?» PHPCS/WPCS menjawab «apakah gaya kode memenuhi standard?»—tiga lapisan komplementer.
Integrasi extension (Larastan) dapat bootstrap framework; itu berbeda dari menjalankan seluruh suite test. Error PHPStan tidak selalu bug runtime—kadang PHPDoc salah, stub kurang, atau magic custom.
Jadi strategi adopsi: level realistis, zero new errors pada PR, naikkan level perlahan, baseline sebagai jembatan, simpan result cache di CI bila runner mendukung artefak persisten. Hindari @phpstan-ignore-line sebagai kebiasaan default.
Tim CodeF kerap menambahkan static analysis saat modernisasi plugin WordPress atau maintenance Laravel—bukan layanan «PHPStan saja», melainkan bagian audit kode dan pipeline dev. Konsultasikan scope bila codebase legacy ribuan error: prioritas path kritis dan baseline terukur lebih realistis daripada memaksa level maksimum sehari.