Trong các phiên bản PHP cũ, gặp vấn đề không nhất quán. Ví dụ: ${$first['name']}. Cú pháp này gây nhầm lẫn hoặc không nhất quán. Để khắc phục, PHP 7 thêm cú pháp mới gọi là "Uniform variable syntax" (Cú pháp biến đồng nhất).
Cú pháp biến đồng nhất đánh giá biến từ trái sang phải. Cần thêm ngoặc nhọn để dùng cú pháp này. Ví dụ:
echo ${$first['name']};
Cú pháp biến đồng nhất cho phép kết hợp toán tử và có thể phá vỡ tương thích ngược ở một số biểu thức dùng đánh giá cũ.
Ví dụ
<?php
$x = (function() {
return 20 - 10;
})();
echo "$x\n";
?>
Kết quả
10
Lưu ý: Chương trình trên gọi ngay biểu thức hàm (immediately invoked function expression).
Cú pháp biến đồng nhất dùng tổ hợp mới của cú pháp hiện có. Ví dụ:
$foo(['bar'])();
Cú pháp biến đồng nhất có thể tham chiếu ký tự trong chuỗi trả về bởi hàm.
[$obj, $obj1][0]->pro;
Trong một số trường hợp, PHP 7 hỗ trợ double colons lồng nhau (::),
$foo['bar']::$baz;
Gọi phương thức/hàm lồng nhau (Nested Method/function calls)
Có thể dùng gọi phương thức/hàm lồng nhau hoặc callable bất kỳ bằng cách gấp đôi ngoặc đơn.
Ví dụ
foo()(); // trả về bởi callable hàm $foo->bar()(); // trả về bởi phương thức instance Foo::bar()(); // phương thức static $foo()(); // trả về bởi callable khác
Tham chiếu biểu thức tùy ý (Arbitrary Expression Dereferencing)
Trong PHP giờ có thể tham chiếu bất kỳ biểu thức hợp lệ nào bao gồm ngoặc đơn. Ví dụ:
(exp)['foo']; // truy cập khóa mảng (exp)->foo; // truy cập thuộc tính (exp)->foo(); // gọi phương thức etc.
Ví dụ
<?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()()();
?>
Kết quả
This is sub() ---------------- This is sub() This is dept() ---------------- This is sub() This is dept() This is emp()