2017-02-12 66 views
-1

以下是我們可以在覈心Magento 2代碼中找到的函數。什麼`...`在PHP對象實例中做什麼

protected function createObject($type, $args) 
{ 
    return new $type(...array_values($args)); 
} 

此功能實例$type(它是一個字符串參數)與所述參數$args(這是一個數組參數)。

我沒有得到的是那3個點(...)。這是一個有效的語法嗎?我從來沒有發現過這樣的對象實例化!

我試圖刪除這些點並嘗試加載頁面。它給出了致命的錯誤。所以看起來,那三個點並不是偶然來到那裏的。

這似乎是代碼不適用於php-5.3或更低版本。所以這是我無法在任何地方找到的新東西。

+0

您可以使用谷歌與查詢php三個點你會感到驚訝。 –

回答

2

這是一個variable-length argument lists。他們是PHP 5.6.x的新手。這個例子來自PHP手冊:

<?php 
function sum(...$numbers) { 
    $acc = 0; 
    foreach ($numbers as $n) { 
     $acc += $n; 
    } 
    return $acc; 
} 

echo sum(1, 2, 3, 4); 
?> 
1

這是使用數組作爲函數參數或參數列表的好方法。 實際上,它是func_get_args()函數的替代品。 Variable-length argument lists

相關問題