PHP 8 দুটো ছোট feature যোগ করেছে যা দুটো খুব common pattern পরিষ্কার করে: বেশ কয়েকটি মানের মধ্যে বেছে নেওয়া, আর হয়তো নেই এমন একটি property নিরাপদে পড়া।
match strict equality-তে তুলনা করে (===, কোনো type juggling না), পরের case-এ কখনো fall through করে না, আর প্রতিটি branch-এ break দরকার না হয়েই সরাসরি একটি মান return করে।
$statusText = match ($statusCode) {
200, 201 => 'Success',
404 => 'Not Found',
500 => 'Server Error',
default => 'Unknown Status',
};| switch | match |
|---|---|
| Loose comparison (==) | Strict comparison (===) |
| break ছাড়া fall through করে | কখনো fall through করে না |
| একটি statement — মান return করে না | একটি expression — সরাসরি মান return করে |
| default ছাড়া একটি unmatched case চুপচাপ skip হয় | default ছাড়া একটি unmatched case একটি error throw করে |
এটা ছাড়া, null হতে পারে এমন কিছুর উপর বেশ কয়েক level গভীরে একটি property পড়তে হাতে check-এর একটি chain দরকার।
// পুরনো উপায়
$city = null;
if ($user !== null) {
if ($user->address !== null) {
$city = $user->address->city;
}
}?-> দিয়ে, chain-এর যেকোনো link null হওয়া মাত্র পুরো expression একটি হাতে check ছাড়াই null-এ short-circuit করে।
// Null-safe উপায়
$city = $user?->address?->city;?-> যা করে না
Null-safe operator শুধু এটা যে chain-এ ব্যবহৃত হয় ঠিক সেটাকেই রক্ষা করে — একটি property নামে একটি typo এখনো একটি সাধারণ error ঘটায়। এটা null-checking replace করে, সব error handling না।