PHP 7 中的统一变量语法

phpserver side programmingprogramming更新于 2025/9/18 5:52:17

在旧版本的 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()(); //通过函数可调用函数返回
$foo->bar()(); //通过实例方法返回
Foo::bar()(); //静态方法
$foo()(); //通过另一个可调用函数返回

任意表达式解引用

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

(exp) [‘foo’] ; //它将访问数组键
(exp)->foo; //这将访问属性
(exp)->foo(); //它将调用方法等等。

示例

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

相关文章