Hari 30: Recap & Best Practices PHP
60 min
Last updated 09 Apr 2026
PHP Best Practices
1. Gunakan Type Declarations
declare(strict_types=1); // Di awal file
function hitung(float $a, float $b): float {
return $a + $b;
}
// Dengan strict_types, memanggil hitung("5", 3) akan throw TypeError
2. Null Safety & Default Values
// Hindari
function sapa($nama) {
echo "Halo " . $nama;
}
// Lebih baik
function sapa(string $nama = "Tamu"): string {
return "Halo, $nama!";
}
3. Early Return
// Hindari deep nesting
function validasi(array $data): bool {
if (!empty($data["nama"])) {
if (strlen($data["nama"]) >= 3) {
if (!empty($data["email"])) {
return true;
}
}
}
return false;
}
// Lebih bersih dengan early return
function validasi2(array $data): bool {
if (empty($data["nama"])) return false;
if (strlen($data["nama"]) < 3) return false;
if (empty($data["email"])) return false;
return true;
}
4. Hindari Magic Numbers
// Jangan
if ($umur >= 17) { ... }
// Pakai konstanta
const UMUR_DEWASA = 17;
if ($umur >= UMUR_DEWASA) { ... }
5. Prinsip SOLID
- Single Responsibility — satu class, satu tanggung jawab
- Open/Closed — terbuka untuk ekstensi, tertutup untuk modifikasi
- Liskov Substitution — subclass bisa menggantikan parent
- Interface Segregation — interface kecil dan spesifik
- Dependency Inversion — bergantung pada abstraksi
💡
Notice: Hanya Budi yang memenuhi kedua syarat: IPK >= 3.5 DAN umur >= 21. Cici IPK 3.5 tapi umur 20 tidak lolos.
Assignment
Tulis fungsi bersih dengan PHP: buat fungsi filter_mahasiswa(array $data, float $min_ipk, int $min_umur): array yang filter mahasiswa dengan IPK >= min_ipk DAN umur >= min_umur. Gunakan early return dan type declarations. Test dengan data 3 mahasiswa.
Expected output:
Budi: IPK 3.7, Umur 22
PHP
index.php
Solution
Output