Article Categories
- All Categories
-
Data Structure
-
Networking
-
RDBMS
-
Operating System
-
Java
-
MS Excel
-
iOS
-
HTML
-
CSS
-
Android
-
Python
-
C Programming
-
C++
-
C#
-
MongoDB
-
MySQL
-
Javascript
-
PHP
-
Economics & Finance
Uniform variable syntax in PHP 7
In older versions of PHP, variable syntax was inconsistent and could be confusing. For example, expressions like ${$first['name']} created ambiguity in parsing order. PHP 7 introduced Uniform Variable Syntax to resolve these inconsistencies by enforcing left-to-right evaluation.
The uniform variable syntax evaluates variables from left to right and requires proper use of curly brackets for clarity −
echo ${$first['name']};
This syntax allows new combinations of operators but may break backward compatibility in expressions that relied on older evaluation patterns.
Function Expression Example
With uniform variable syntax, you can immediately invoke function expressions −
<?php
$x = (function() {
return 20 - 10;
})();
echo "$x<br>";
?>
10
New Syntax Combinations
The uniform variable syntax enables several new combinations that weren't possible before −
// Function call on array result $foo(['bar'])(); // Property access on array element [$obj, $obj1][0]->property; // Static property access with dynamic class $foo['bar']::$baz;
Nested Method and Function Calls
You can chain multiple function calls by doubling up parentheses −
foo()(); // Function returning callable $foo->bar()(); // Instance method returning callable Foo::bar()(); // Static method returning callable $foo()(); // Variable function returning callable
Arbitrary Expression Dereferencing
Any valid expression can now be dereferenced using parentheses −
(expression)['foo']; // Access array key (expression)->foo; // Access property (expression)->foo(); // Call method
Chained Function Example
Here's a practical example demonstrating nested function calls −
<?php
function emp() {
echo "This is emp() <br>";
}
function dept() {
echo "This is dept() <br>";
return 'emp';
}
function sub() {
echo "This is sub()<br>";
return 'dept';
}
sub();
echo "----------------<br>";
sub()();
echo "----------------<br>";
sub()()();
?>
This is sub() ---------------- This is sub() This is dept() ---------------- This is sub() This is dept() This is emp()
Conclusion
Uniform Variable Syntax in PHP 7 provides consistent left-to-right evaluation, enabling powerful new syntax combinations like chained function calls and expression dereferencing, though it may break some legacy code patterns.
