variadic функции — вызов __invoke с переменным числом аргументов

Возможно ли с помощью какого-то подвоха вызвать класс через __invoke магический метод с использованием переменного числа аргументов?

Я знаю, что в php 5.6 есть variadics, но моей версии еще нет …

Для обычного метода класса я мог бы попытаться сделать что-нибудь, используя магический метод __call и call_user_func_array функция. Что насчет __invoke магический метод?

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
2

Другие решения

PHP, похоже, не возражает, если вы добавите аргументы в метод invoke.

Так что это также будет работать:

<?php

class Invoked
{
public function __invoke($value, $key)
{
var_dump($value, $key);
}
}

$numbers = range(0, 10);

array_walk($numbers, new Invoked);
0

По вопросам рекламы [email protected]