PHP के पुराने संस्करणों में, हमें एक असंगति समस्या का सामना करना पड़ता था। उदाहरण के लिए: ${$first ['name']}। यह सिंटैक्स भ्रम पैदा कर सकता है या हम कह सकते हैं कि सिंटैक्स सुसंगत नहीं है। असंगति समस्या को दूर करने के लिए, PHP 7 ने "यूनिफॉर्म वेरिएबल सिंटैक्स" नामक नया सिंटैक्स जोड़ा।
यूनिफॉर्म वेरिएबल सिंटैक्स वेरिएबल्स का मूल्यांकन बाएं से दाएं करता है। हमें यूनिफॉर्म वेरिएबल सिंटैक्स का उपयोग करने के लिए कर्ली ब्रैकेट्स जोड़ने की आवश्यकता है। उदाहरण के लिए,
echo ${$first['name']};
यूनिफॉर्म वेरिएबल सिंटैक्स ऑपरेटर्स के संयोजन की अनुमति देता है और यह उन एक्सप्रेशन्स में बैकवर्ड कम्पैटिबिलिटी को भी तोड़ सकता है जहां पुराने मूल्यांकन का उपयोग किया जाता है।
उदाहरण
<?php
$x = (function() {
return 20 - 10;
})
();
echo "$x\n";
?>
आउटपुट
उपरोक्त PHP प्रोग्राम का आउटपुट होगा:
10
नोट: उपरोक्त प्रोग्राम तुरंत फ़ंक्शन एक्सप्रेशन को इनवोक करेगा।
यूनिफॉर्म वेरिएबल सिंटैक्स मौजूदा सिंटैक्स के नए संयोजनों का उपयोग करता है। उदाहरण के लिए,
$foo(['bar'])();
यूनिफॉर्म वेरिएबल सिंटैक्स फ़ंक्शन्स द्वारा लौटाए गए स्ट्रिंग्स में कैरेक्टर्स को डीरेफरेंस कर सकता है।
[$obj, $obj1] [0]->pro;
कुछ मामलों में, PHP 7 नेस्टेड डबल कॉलन (::) का समर्थन करता है,
$foo['bar']::$baz;
नेस्टेड मेथड/फ़ंक्शन कॉल्स
हम नेस्टेड मेथड और फ़ंक्शन कॉल्स या किसी भी कॉल करने योग्य को पैरेंथेसिस को दोगुना करके उपयोग कर सकते हैं।
उदाहरण
foo()(); // फ़ंक्शन कॉल करने योग्य द्वारा रिटर्न $foo->bar()(); // इंस्टेंस मेथड द्वारा रिटर्न Foo::bar()(); // स्टैटिक मेथड $foo()(); // किसी अन्य कॉल करने योग्य द्वारा रिटर्न
मनमाना एक्सप्रेशन डीरेफरेंसिंग
PHP में हम अब पैरेंथेसिस सहित किसी भी वैध एक्सप्रेशन को डीरेफरेंस कर सकते हैं। उदाहरण के लिए,
(exp) ['foo'] ; // यह एक सरणी कुंजी एक्सेस करेगा (exp)->foo; // यह प्रॉपर्टी एक्सेस करेगा (exp)->foo(); // यह एक मेथड को कॉल करेगा आदि।
उदाहरण
<?php
function emp() {
echo "This is emp() \n";
};
function dept() {
echo "This is dept() \n";
return emp;
};
function sub() {
echo "This is sub()\n";
return dept;
};
sub();
echo "----------------\n";
sub()();
echo "----------------\n";
sub()()();
?>
आउटपुट
This is sub() ---------------- This is sub() This is dept() ---------------- This is sub() This is dept() This is emp()