Skip to content

Add route caching (PHP 8.4 compatible)#22

Merged
agissept merged 4 commits into
masterfrom
feature/route-caching
Jul 9, 2026
Merged

Add route caching (PHP 8.4 compatible)#22
agissept merged 4 commits into
masterfrom
feature/route-caching

Conversation

@agissept

@agissept agissept commented Jul 8, 2026

Copy link
Copy Markdown
Member

Ringkasan

Menambahkan route caching ke framework, di-port dari MaartenStaa/laravel-41-route-caching dan disesuaikan agar jalan di PHP 8.4 — menggantikan dependency package yang sudah abandoned (2015) dan fatal di 8.4 karena implicit-nullable parameter.

Ditempatkan di namespace baru Illuminate\CachedRouting (opt-in), sehingga core Illuminate\Routing tidak tersentuh.

Mekanisme

Route::cache(__FILE__, function () { ... }) membungkus definisi route. Isi collection di-serialize() ke cache store (Redis/file), di-key per file. Pada request berikutnya route dipulihkan dari cache tanpa menjalankan ulang callback — closure controller dibangun lazy saat dispatch, sehingga route tetap serializable.

  • Illuminate\CachedRouting\Routercache(), clearCache(), keeps controller action sbg string
  • Illuminate\CachedRouting\Route — precompile via __sleep(), reuse compiled route
  • Illuminate\CachedRouting\RouteCollection — save/restore/serialize helpers
  • Illuminate\CachedRouting\RoutingServiceProvider — swap router (daftarkan di config app)

Perubahan vs package asli

  • Fix PHP 8.4: ?Container (implicit-nullable → explicit) — akar bug yang bikin package asli tidak jalan
  • Test dimigrasi ke PHPUnit 9.6 + Symfony 6.4 (HttpKernelBrowser, createMock, expectException)

Cara pakai

Daftarkan provider di app/config/app.php:

'Illuminate\CachedRouting\RoutingServiceProvider',

lalu bungkus route:

Route::cache(__FILE__, function () {
    // definisi route controller di sini
});

Testing

  • tests/CachedRouting/ — 12 test, 41 assertion, lulus di PHP 8.4
  • Full suite hijau (1631 test)

🤖 Generated with Claude Code

@agissept agissept self-assigned this Jul 9, 2026
@agissept agissept merged commit 0173cf8 into master Jul 9, 2026
2 checks passed
@agissept agissept deleted the feature/route-caching branch July 9, 2026 02:27
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant