不确定如何准确地命名这个标题。在研究 Laravel 4 类以了解 Facades 工作原理时,我偶然发现了以下内容:
Illuminate\Support\Facades\Facades.php@__callStatic
public static function __callStatic($method, $args)
{
$instance = static::getFacadeRoot();
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(array($instance, $method), $args);
}
}
据我所知,这种方法调用外观引用的类的任何给定方法并传递参数。我可能错了,但这是我目前的理解。
真正困扰我的部分是switch语句。
为什么需要0到4个case,当默认情况下default case可以工作呢。
即使case 0在没有参数的情况下有点意义,为什么要有case 1-4而不是继续到case 10之类的情况。这是否有合理的论据,还是只是过早优化的情况?