这个开关声明不是废话吗?

时间:2015-06-27 07:18:04

标签: php laravel switch-statement laravel-5

我在Laravel 5 core中找到了这个奇怪的开关语句:

switch (count($args)) {
    case 0:
        return $instance->$method();
    case 1:
        return $instance->$method($args[0]);
    case 2:
        return $instance->$method($args[0], $args[1]);
    case 3:
        return $instance->$method($args[0], $args[1], $args[2]);
    case 4:
        return $instance->$method($args[0], $args[1], $args[2], $args[3]);
    default:
        return call_user_func_array([$instance, $method], $args);

他们是否有可能决定建立这样的东西而不仅仅是使用它?

return call_user_func_array([$instance, $method], $args);

有什么好处吗?

2 个答案:

答案 0 :(得分:6)

恕我直言,程序员避免call_user_func_array()$instance->method()进行合理数量的典型调用。当然,直接调用方法而不是使用call_user_func_array()会更快。代码是用爱写的:)

答案 1 :(得分:0)

可能存在多达4个参数的函数,这些参数期望按值传递而不是按引用传递。请注意有关PHP 5.4之前用法的函数文档的注释。 call_user_func_array docs