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);