是否有可能使用可变数量的参数通过__invoke
魔术方法调用类?
我知道在php 5.6中有variadics,但我的版本还没有......
对于普通的类方法,我可以尝试使用魔术方法__call
和call_user_func_array
函数来执行某些操作。 __invoke
魔术方法怎么样?
答案 0 :(得分:2)
似乎可以使用func_get_args()
:
<?php
class CallableClass
{
public function __invoke()
{
var_dump(func_get_args());
}
}
$obj = new CallableClass;
$obj(5, 6, 7, 8); // vary arguments to meet your needs
答案 1 :(得分:0)
如果将参数添加到invoke方法,PHP似乎并不介意。
所以这也有效:
<?php
class Invoked
{
public function __invoke($value, $key)
{
var_dump($value, $key);
}
}
$numbers = range(0, 10);
array_walk($numbers, new Invoked);
答案 2 :(得分:0)
您可以使用rest运算符:
public function __invoke(...$args)
{
print_r($args);
}