【发布时间】:2015-06-27 07:18:03
【问题描述】:
我在Laravel 5 core 中发现了这个奇怪的 switch 语句:
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);
有什么好处吗?
【问题讨论】:
-
也许这是从具有函数重载的语言翻译而来的。或者,他们发现在最常见的情况下(大概 $args 为 4 或更少)会有轻微的性能提升。
-
这不是废话..像c++这样的语言都支持this及其所谓的函数重载,多态可以通过重载实现
-
@NullPoiиteя 但是 PHP 没有函数重载。
-
对我来说似乎有点笨拙,我很想知道
$method内部正在做什么。
标签: php laravel switch-statement laravel-5