Gần đây tôi đã xem xét một số mã của mình và nhận thấy rằng trong tình trạng đãng trí, tôi đã để lại một cấu trúc như sau:
$guid = empty($subscription->guid) ? : $subscription->guid;
Bây giờ, điều này không làm đúng và sai , nhưng vì thuộc tính đó luôn được đặt nên hiện tại nó hoạt động tốt và không có lỗi cú pháp kể từ 5.3 vì thay đổi sau :
Kể từ PHP 5.3, có thể loại bỏ phần giữa của toán tử ternary. Biểu thức expr1 ?: Expr3 trả về expr1 nếu expr1 ước lượng thành TRUE và expr3 nếu không.
Tôi đã không nhận thức được sự thay đổi này và bây giờ tôi tò mò liệu tôi có nên sử dụng nó hay không. Đây là thứ tôi vô cùng thiếu từ các ngôn ngữ như ruby nơi bạn có thể làm, ví dụ, a = b || c
để có được b
hoặc c
hơn là một boolean 'thực'. Tuy nhiên, cú pháp họ đã chọn cho toán tử ternary có vẻ hơi trái ngược với tôi. Tôi có nên sử dụng điều này trong mã sản xuất? Nó chắc chắn đã ném mình khi tôi nhìn thấy nó một cách tình cờ.