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()
广告