PHP 7中的统一变量语法

在旧版本的PHP中,我们遇到了一个不一致的问题。例如:${$first ['name']}。这种语法可能会造成混淆,或者我们可以说语法不一致。为了克服不一致的问题,PHP 7添加了新的语法,称为“统一变量语法”。

统一变量语法从左开始评估变量,right.We需要添加大括号以使用统一变量语法。例如,

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()(); // return by another callable

任意表达式解引用

在PHP中,我们现在可以取消引用任何有效的表达式,包括括号。例如,

(exp) [‘foo’] ; // 它将访问一个数组键
(exp)->foo; // 这将访问该属性
(exp)->foo(); // It will call to a method etc.

示例

<?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()