उपाय
echo $person->middleName ?? 'Person does not have a middle name';
यह दिखाने के लिए कि यदि यह कैसे काम कर रहा है, इस बारे में अधिक स्पष्टता के लिए एक बयान में यह कैसे दिखेगा।
if($person->middleName ?? false) {
echo $person->middleName;
} else {
echo 'Person does not have a middle name';
}
व्याख्या
किसी चीज़ के अस्तित्व की जाँच करने का पारंपरिक PHP तरीका है:
if(isset($person->middleName)) {
echo $person->middleName;
} else {
echo 'Person does not have a middle name';
}
या अधिक विशिष्ट वर्ग के लिए:
if(property_exists($person, 'middleName')) {
echo $person->middleName;
} else {
echo 'Person does not have a middle name';
}
ये दोनों लंबे बयानों में ठीक हैं लेकिन तीखे बयानों में वे अनावश्यक रूप से बोझिल हो जाते हैं:
isset($person->middleName) ? echo $person->middleName : echo 'Person does not have a middle name';
आप भी इसे प्राप्त कर सकते हैं जैसे कि केवल टर्नरी ऑपरेटर के साथ:
echo $person->middleName ?: 'Person does not have a middle name';
लेकिन ... यदि मान मौजूद नहीं है (सेट नहीं है) तो यह एक वृद्धि करेगा E_NOTICEऔर सबसे अच्छा अभ्यास नहीं है। यदि मान है nullतो वह अपवाद नहीं बढ़ाएगा।
इसलिए बचावकर्ता को यह एक छोटा सा जवाब देने वाला टर्नरी ऑपरेटर:
echo $person->middleName ?? 'Person does not have a middle name';