Возможно ли с помощью какого-то подвоха вызвать класс через __invoke
магический метод с использованием переменного числа аргументов?
Я знаю, что в php 5.6 есть variadics, но моей версии еще нет …
Для обычного метода класса я мог бы попытаться сделать что-нибудь, используя магический метод __call
и call_user_func_array
функция. Что насчет __invoke
магический метод?
Кажется возможным с 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
PHP, похоже, не возражает, если вы добавите аргументы в метод invoke.
Так что это также будет работать:
<?php
class Invoked
{
public function __invoke($value, $key)
{
var_dump($value, $key);
}
}
$numbers = range(0, 10);
array_walk($numbers, new Invoked);