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 次瀏覽

啟動你的職業生涯

完成課程獲得認證

開始學習
廣告
© . All rights reserved.