параметры — передать массив как отдельные параметры в функцию php

Решение

Благодаря noufalcep, Я получил это с помощью

public function __call($method, $params){
return call_user_func_array(array($this->_rpc, $method), $params);
}

Оригинальный вопрос

Я сделал класс, который оборачивает другой класс, jsonrpc, для простоты использования в моем проекте.

JSONRPC использует public function __call($method, $params) справиться с любым родовым методом.

Я также использую то же самое в своем классе, но это означает, что я должен преобразовать $params массив в отдельные переменные, которые будут переданы в качестве аргументов для jsonrpc __call(),

Как мне изменить массив $params на несколько аргументов?

В моем классе обертки я попытался использовать ... предоставить аргументы, но кажется, что это работает только при создании экземпляра массива с [],

Простым решением было бы отредактировать, как класс jsonrpc взаимодействует со своими параметрами, но я бы предпочел оставить его источник без изменений.

Что я пробовал (очевидно, каждый __call пробовал отдельно, а не одновременно …)

class Wrap{
//Could have been great, but doesn't work.
public function __call($method, $params){
$params = array_values($params);
return $this->_rpc->$method(...$params);
}

//Horrible, but works
public function __call($method, $params){
switch (count($params)) {
case 0:
return $this->_rpc->$method();
break;
case 1:
return $this->_rpc->$method($params[0]);
break;
case 2:
return $this->_rpc->$method($params[0], $params[1]);
break;
case 3:
return $this->_rpc->$method($params[0], $params[1], $params[2]);
break;
case 4:
return $this->_rpc->$method($params[0], $params[1], $params[2], $params[3]);
break;
default:
die("Horrible way doesn't have enough cases!");
break;
}
}
}

Благодарю.

1

Решение

использование call_user_func_array

public function __call($method, $params){
return call_user_func_array($this->_rpc->$method(),$params)
}
1

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

Других решений пока нет …

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