Learn
← Previous

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