Belirtildiği gibi, PHP 5.6+ itibariyle, bir dizi bağımsız değişkenle bir işlevi kolayca çağırmak için ...
belirteci ("splat operatörü" olarak da bilinir, değişken işlevlerin bir parçası olarak ) kullanabilirsiniz (gerekir!) :
<?php
function variadic($arg1, $arg2)
{
echo $arg1.' '.$arg2;
}
$array = ['Hello', 'World'];
variadic(...$array);
Not: dizi öğeleri, anahtarlarına göre değil dizideki konumlarına göre bağımsız değişkenlere eşlenir .
Gereğince CarlosCarucce yorumuyla , argüman veri açma bu formu arayla en hızlı yöntemdir her durumda. Bazı karşılaştırmalarda 5 kattan daha hızlıdır call_user_func_array
.
Bir yana
Çünkü bunun gerçekten yararlı olduğunu düşünüyorum (soruyla doğrudan ilgili olmasa da): aktarılan tüm değerlerin belirli bir türle eşleştiğinden emin olmak için işlev tanımınızda splat operatör parametresini yazabilirsiniz.
(Bunu yapmanın , tanımladığınız son parametre OLMALIDIR ve işleve aktarılan tüm parametreleri diziye paketlediğini unutmayın.)
Bu, bir dizinin belirli bir türden öğeler içerdiğinden emin olmak için harikadır:
<?php
function variadic($var, SomeClass ...$items)
{
}
variadic('Hello', new SomeClass, new SomeClass);
$items = [
new SomeClass,
new SomeClass,
];
variadic('Hello', ...$items);