我想知道是否有人可能知道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。
答案 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
)