PHP 5.4.17替代“...运算符”

时间:2017-06-21 19:28:41

标签: php php-7 php-5.4

我想知道是否有人可能知道PHP 5.6.x和更高...运算符的替代方法(或者我相信它的splat运算符)。

我目前在PHP 7版本中所做的是:

$this->callAction(
...explode('@', $this->routes["authControllers"][$this->routes["uri"][$uri]])
);

callAction()函数需要2个参数callAction($controller, $action),但现在我需要将代码降级为PHP 5.4.17。

2 个答案:

答案 0 :(得分:1)

虽然splat运算符...call_user_func_array()类似:

call_user_func_array(array($this,'callAction'),
                     explode('@', $this->routes["authControllers"][$this->routes["uri"][$uri]]));

我认为传递必需的参数会更有意义:

list($controller, $action) = explode('@', $this->routes["authControllers"][$this->routes["uri"][$uri]]);
$this->callAction($controller, $action);

答案 1 :(得分:0)

我认为等效的PHP5代码是call_user_func_array(array($this,'callAction'),(explode('@', $this->routes["authControllers"][$this->routes["uri"][$uri]])));

编辑:但是如果callAction总是只有2个参数,你可以做

$args=explode('@',$this->routes["authControllers"][$this->routes["uri"][$uri]]));
$this->callAction($args[0],$args[1]);

但如果是这样的话,idk为什么php7代码与...一样烦恼,我认为这是针对可变数量的参数? (比如call_user_func_array是for。对于一个带有可变数量参数的函数的例子,请参阅var_dump