Proyek kedelapan menerapkan domain modeling pada dunia nyata: pencatatan keuangan pribadi. Kita menerjemahkan konsep akun, kategori, transaksi, budget, dan transaksi berulang menjadi schema dan service yang bersih. Bagian akhir menyusun laporan periodik, import-export CSV/JSON, testing, dan deployment.
Kita berlatih menerjemahkan konsep bisnis sehari-hari menjadi schema dan service yang bersih, kemudian melengkapinya dengan laporan periodik, import-export, dan pengujian otomatis. Seluruh kode contoh dijalankan dan diverifikasi di PHP 8.4 dengan SQLite.
Terjemahkan konsep akun, kategori, dan transaksi menjadi tiga tabel SQLite dengan uang sebagai integer sen.
Buka → # Bagian 2: Akun dan KategoriBangun AccountRepository dan CategoryRepository dengan saldo terhitung dari transaksi serta helper formatRupiah yang mengubah sen menjadi teks rupiah.
Buka → # Bagian 3: Pencatatan TransaksiBangun TransactionRepository dan TransactionService dengan validasi domain, query periode BETWEEN, serta alur pembatalan transaksi.
Buka → # Bagian 4: Budget dan Recurring TransactionsTambahkan budget bulanan per kategori dan cetakan transaksi rutin yang idempoten lewat migrasi schema dan dua service baru.
Buka → # Bagian 5: Laporan dan VisualisasiSusun ringkasan bulanan, arus kas, dan laba rugi lewat agregasi SQL, lalu sajikan sebagai grafik batang dan sparkline teks yang deterministik.
Buka → # Bagian 6: Import/ExportEkspor transaksi ke CSV lewat stream memori dan JSON, lalu impor kembali dengan validasi per baris, penanganan duplikat, dan laporan impor yang jujur.
Buka → # Bagian 7: Testing dan DeploymentPelajari cara membuktikan seluruh janji aplikasi keuangan dengan PHPUnit dan database :memory: segar per test, lalu mengemas proyek menjadi image Docker yang siap dideploy.
Buka →