PHP 的變動長度和具名參數

這是不行的:

class MyClass { public function vlal0(...$var1, $var2) { print_r($var1); print_r($var2); } } $c = new MyClass(); $c->vlal0(1,2,3,4, var2:'test');

因為:PHP Fatal error: Only the last parameter can be variadic...

後來想到一個變通的方式:

class MyClass { public function __call($name, $arguments) { call_user_func([$this, 'vlal'], $arguments); } public function vlal($args) { print_r($args); } } $c = new MyClass(); $c->qoo(1,2,3,4, var2:'test');

結果顯示:

Array
(
    [0] => 1
    [1] => 2
    [2] => 3
    [3] => 4
    [var2] => test
)

雖然結果有些不一樣,但看起來是可用的。

當然可以理解變動長度參數一定要放最後,不過既然有具名參數,似乎還是可以通融的。