PHP-এর পুরানো সংস্করণে, আমরা একটি ইনকনসিস্টেন্সি সমস্যা মোকাবিলা করতাম। উদাহরণ: ${$first [‘name’]}। এই সিনট্যাক্স বিভ্রান্তি সৃষ্টি করতে পারে বা আমরা বলতে পারি সিনট্যাক্স কনসিস্টেন্ট নয়। ইনকনসিস্টেন্সি সমস্যা সমাধান করতে, PHP 7 নতুন সিনট্যাক্স যুক্ত করেছে যাকে “Uniform variable syntax” বলা হয়।
Uniform variable syntax ভেরিয়েবল বাম থেকে ডানে ইভ্যালুয়েট করে। Uniform variable syntax ব্যবহার করতে আমাদের কার্লি ব্র্যাকেট যোগ করতে হয়। উদাহরণস্বরূপ,
echo ${$first[‘name’]};Uniform variable syntax অপারেটরের কনবিনেশন অনুমতি দেয় এবং কিছু এক্সপ্রেশনে যেখানে পুরনো ইভ্যালুয়েশন ব্যবহার করা হয়েছে, সেখানে ব্যাকওয়ার্ড কম্প্যাটিবিলিটি ভাঙতে পারে।
উদাহরণ
<?php $x = (function() { return 20 - 10; }) (); echo "$x\n"; ?>আউটপুট
উপরোক্ত PHP প্রোগ্রামের আউটপুট হবে:
10
নোট: উপরের প্রোগ্রাম অবিলম্বে ফাংশন এক্সপ্রেশন ইনভোক করবে।
Uniform variable syntax বিদ্যমান সিনট্যাক্সের নতুন কনবিনেশন ব্যবহার করে। উদাহরণস্বরূপ,
$foo([‘bar’])();
Uniform variable syntax ফাংশন দ্বারা রিটার্ন করা স্ট্রিং-এ ক্যারেক্টার ডিরেফারেন্স করতে পারে।
[$obj, $obj1] [0]->pro;
কিছু কেসে, PHP 7 নেস্টেড ডাবল কলন(::) সাপোর্ট করে,
$foo[‘bar’]::$baz;
Nested Method/function calls
আমরা নেস্টেড মেথড এবং ফাংশন কল বা যেকোনো কলেबल ব্যবহার করতে পারি ডাবল আপ প্যারেনথেসিস করে।
উদাহরণ
foo()(); //return by a function callable $foo->bar()(); // return by an instance method Foo::bar()(); // static method $foo()(); // return by another callable
Arbitrary Expression Dereferencing
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()