PHP SOLID Architecture & OOP Medium

PHP 04. SOLID Principles: Discount Calculator PHP 04. SOLID Principles: Discount Calculator

Hitung harga checkout bertingkat berdasarkan tier membership dan voucher flat. Calculate tiered checkout price based on membership and flat voucher.

Contoh Logika Serupa: Kalkulasi Pajak Kendaraan Similar Pattern Example: Tiered Vehicle Tax Calculation

Referensi Kode

Menggunakan ekspresi match untuk tarif persentase dan menambahkan biaya administrasi kondisional: Using match expressions for rates and conditional extra fees:

<?php

function calculateTax(float $basePrice, string $type): float {
    $rate = match(strtoupper($type)) {
        'ELECTRIC' => 0.02,
        'HYBRID'   => 0.05,
        default    => 0.10,
    };
    $tax = $basePrice * $rate;
    if ($basePrice > 100000000) {
        $tax += 500000; // Biaya admin barang mewah
    }
    return $tax;
}

Langkah & Spesifikasi Tugas Step-by-Step Requirements

Contoh Kasus & Ketentuan Example Cases & Rules

Target Output (Expected) Expected Output

80000
Petunjuk Pengerjaan:
  • Clue 1: Gunakan `match(strtoupper($membership))` untuk memetakan tier ke persentase desimal.
  • Clue 2: Hitung diskon persentase dulu sebelum mengecek threshold 500.000.
  • Clue 3: Potongan Rp 25.000 hanya diberikan jika harga setelah diskon persentase bernilai >= 500.000.
<?php

function calculateFinalPrice(float $subtotal, string $membership): float {
    $rate = match(strtoupper($membership)) {
        'PREMIUM' => 0.20,
        'MEMBER' => 0.10,
        default => 0.0,
    };
    $discounted = $subtotal - ($subtotal * $rate);
    if ($discounted >= 500000) {
        $discounted -= 25000;
    }
    return $discounted;
}
solution.php
✨ Kode dirapikan!

Login Diperlukan

Masuk dengan akun Google untuk mengeksekusi kodingan & query sandbox di server secara interaktif.