Match expression in PHP 8

Sử dụng Match expression trong PHP 8. Giúp đoạn code của ta trông maintain hơn. 

$statusCode = 200;

$result_v1 = match ($statusCode) {
    200, 300 => "Thành công",
    400 => "Lỗi client",
    500 => "Lỗi server",
    default => "Không xác định",
};

$result_v2 = match ($statusCode) {
    200, 300 => function($statusCode) {
         return "Thành công!".$statusCode;
         },
    400 => function() {
         return "Lỗi client";
    },
    500 => "Lỗi server",
    default => "Không xác định",
};

// Gọi hàm nếu kết quả là một closure
echo is_callable($result_v2) ? $result_v2($statusCode) : $result_v2;

Ví dụ chúng ta tính toán giá khuyến mãi

function calculateDiscount($price, $percentage) : float {
    return $price * (1 - $percentage / 100);
}

$customerType = "gold";
$originalPrice = 1000;

$discountedPrice = match ($customerType) {
    "bronze" => fn($price) => calculateDiscount($price, 5),
    "silver" => fn($price) => calculateDiscount($price, 10),
    "gold" => fn($price) => calculateDiscount($price, 15),
    "platinum" => fn($price) => calculateDiscount($price, 20),
    default => fn($price) => $price, // Không giảm giá
};

// Áp dụng giảm giá và làm tròn đến 2 chữ số thập phân
$finalPrice = round($discountedPrice($originalPrice), 2);

echo "Loại khách hàng: $customerType\n";
echo "Giá gốc: $originalPrice\n";
echo "Giá sau khuyến mãi: $finalPrice\n";

// Tính phần trăm giảm giá
$discountPercentage = (($originalPrice - $finalPrice) / $originalPrice) * 100;
echo "Phần trăm giảm giá: " . round($discountPercentage, 2) . "%\n";

 

Bài Viết Liên Quan

Messsage

Nếu bạn thích chia sẻ của tôi, đừng quên nhấn nút !ĐĂNG KÝ