PHP - 使用可变数量的参数调用__invoke

时间:2015-05-28 14:59:26

标签: php variadic-functions

是否有可能使用可变数量的参数通过__invoke魔术方法调用类?

我知道在php 5.6中有variadics,但我的版本还没有......

对于普通的类方法,我可以尝试使用魔术方法__callcall_user_func_array函数来执行某些操作。 __invoke魔术方法怎么样?

3 个答案:

答案 0 :(得分:2)

似乎可以使用func_get_args()

调整example from the docs

<?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);
}