PHP 8.0: Null-safe operator

Php Tip 💡 : Null-safe operator 🎉

Trong PHP 8, chúng ta có thể sử dụng cách viết nullsafe (?->). Thật tuyệt vời khi ta kiểm tra các đối tượng , function,...

Ví dụ : Cách viết sao giúp ta kiểm tra đối tượng address, có tồn tại không, nếu có nó sẽ trỏ tới function getContry() để lấy giá trị

$regularTotal = $user->getCart()?->addItem("Áo")?->addItem("Quần")?->getTotal();

Ví dụ :

<?php 

class User {
    public function __construct(public string $name) {}

    public function getCart(): ?Cart {
        // Giả sử đôi khi người dùng có thể không có giỏ hàng
        return rand(0, 1) ? new Cart() : null;
    }
}

class Cart {
    private array $items = [];

    public function addItem(string $item): self {
        $this->items[] = $item;
        return $this;
    }

    public function getItems(): array {
        return $this->items;
    }

    public function getTotal(): float {
        // Giả sử mỗi mặt hàng có giá 10
        return count($this->items) * 10;
    }
}

class PremiumCart extends Cart {
    public function applyDiscount(): float {
        $total = $this->getTotal();
        return $total * 0.9; // 10% discount
    }
}

function simulateUserAction(User $user) {
    // Sử dụng nullsafe operator để xử lý các trường hợp khác nhau
    $regularTotal = $user->getCart()?->addItem("Áo")?->addItem("Quần")?->getTotal();
    
    echo "Giỏ hàng của {$user->name}:\n";
    echo "Tổng tiền (giỏ hàng thường): " . ($regularTotal ?? "Không có giỏ hàng") . "\n";

    // Giả sử PremiumCart được sử dụng cho người dùng premium
    $premiumCart = new PremiumCart();
    $premiumTotal = $premiumCart?->addItem("Áo")?->addItem("Quần")?->applyDiscount();
    
    echo "Tổng tiền (giỏ hàng premium với giảm giá): $premiumTotal\n";

    // Hiển thị các mặt hàng (nếu có)
    $items = $user->getCart()?->getItems();
    if ($items) {
        echo "Các mặt hàng: " . implode(", ", $items) . "\n";
    } else {
        echo "Không có mặt hàng trong giỏ hàng.\n";
    }
}

// Sử dụng
$user = new User("Hoà Nguyễn Coder");
simulateUserAction($user);

 

Bài Viết Liên Quan

x

Xin chào! Hãy ủng hộ chúng tôi bằng cách nhấp vào quảng cáo trên trang web. Việc này giúp chúng tôi có kinh phí để duy trì và phát triển website ngày một tốt hơn. (Hello! Please support us by clicking on the ads on this site. Your clicks provide us with the funds needed to maintain and improve the website continuously.)

Ngoài ra, hãy đăng ký kênh YouTube của chúng tôi để không bỏ lỡ những nội dung hữu ích! (Also, subscribe to our YouTube channel to stay updated with valuable content!)

Đăng Ký