Этот вопрос закрыт для ответов, так как повторяет вопрос Как определить значения в запросе и передать их как переменные?
@Farrien
Tell me who

Как передать анонимной функции список аргументов?

Допустим, в одном месте вызывается метод класса
Simple::do( '/product/?id={v}', function($id) {
	echo $id;
	return false;
});


Этот метод должен обработать заданный URL
public function do($url, Closure $callback = NULL) {
...
$parsed_url = ... //  тут строка '/product/?id={v}' превращаются в массив: ключ это ключ, а значение это то, что вместе {v}. Это от текущего запроса должно браться.
$callback($id) // тут вызывается переданная анонимная функция. ей передаются в виде переменных ключи массива
...
}

При этом количество аргументов переданных зависит от количества того, что в фигурных скобках {v}

То есть в ходе выполнения должно быть так:
Допустим, сейчас открыта страница example.com/product/?id=1&category=4
Анонимная функция классовым методом будет вызвана вот так: function(1, 4) {}
Внутри функции они будут доступны через переменные $id и $category.
  • Вопрос задан
  • 132 просмотра
Ответы на вопрос 1
Вариант 1
function doSomething($url, Closure $callback)
{
    // собираем параметры из url
    $p1 = 1;
    $p2 = 2;
    
    // найдём переменные с указанными именами
    // и упакуем их в массив 'название перменной' => 'значение'
    $params = compact('p1', 'p2');
    
    $callback($params);
}

$callback = function ($params)
{
    // распакуем массив
    extract($params);
    
    // теперь нам доступны переменные из вызывающей функции с теми же именами
    print_r($p1);
    print_r($p2);
};

doSomething('url', $callback);

Результат: 12

Вариант 2.
Использовать оператор spread php.net
function processor (...$params) {
    //
}
Ответ написан
Ваш ответ на вопрос

Вопрос закрыт для ответов и комментариев

Потому что уже есть похожий вопрос.
Похожие вопросы