?T khai báo giá trị hoặc là kiểu T, hoặc là null.
- Dùng được cho tham số, kiểu trả về, và property (từ 7.4).
- Đây là ràng buộc rõ ràng:
?intnhậninthoặcnull, nhưng không nhận string.
php
function find(?int $id): ?User { // nhận int|null, trả User|null
if ($id === null) return null;
return User::find($id);
}- Từ PHP 8,
?Ttương đương unionT|null— có thể viếtint|nullcho rõ nghĩa hơn khi union nhiều kiểu. - Khác với tham số optional:
?int $idvẫn bắt buộc truyền (truyềnnullđược); cònint $id = 0mới là có default và được phép bỏ trống. - Khi hàm trả
?User, caller phải xử lý null để tránh lỗi gọi method trênnull.