PHP 7 中的统一变量语法


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

统一变量语法从左到右计算变量。我们需要添加花括号才能使用统一变量语法。例如,

echo ${$first[‘name’]};

统一变量语法允许运算符的组合,并且它也可能在某些表达式中破坏向后兼容性,在这些表达式中使用了旧的计算方法。

示例

在线演示

<?php
   $x = (function() {
      return 20 - 10;
      })
   ();
   echo "$x
"; ?>

输出

上述 PHP 程序的输出将是

10

注意:上述程序将立即调用函数表达式。

统一变量语法使用现有语法的新的组合。例如,

$foo([‘bar’])();

统一变量语法可以取消引用函数返回的字符串中的字符。

[$obj, $obj1] [0]->pro;

在某些情况下,PHP 7 支持嵌套双冒号 (::),

$foo[‘bar’]::$baz;

嵌套方法/函数调用

我们可以使用嵌套方法和函数调用或任何可调用对象来加倍括号。

示例

foo()(); //return by a function callable
$foo->bar()(); // return by an instance method
Foo::bar()(); // static method
$foo()(); // return by another callable

任意表达式取消引用

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

(exp) [‘foo’] ; // It will access an array key
(exp)->foo; // This will access the property
(exp)->foo(); // It will call to a method etc.

示例

在线演示

<?php
   function emp() {
      echo "This is emp() 
";    };    function dept() {       echo "This is dept()
";       return emp;    };    function sub() {       echo "This is sub()
";       return dept;    };    sub();    echo "----------------
";    sub()();    echo "----------------
";    sub()()(); ?>

输出

上述程序的输出将是:

This is sub()
-------------
This is sub()
This is dept()
-------------
This is sub()
This is dept()
This is emp()

更新于: 2021年3月13日

366 次浏览

启动你的职业生涯

完成课程获得认证

开始学习
广告