【发布时间】:2026-01-01 05:40:01
【问题描述】:
不确定如何准确命名。在深入研究 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);
}
}
现在据我所知,此方法调用 Facade 引用的类的任何给定方法并传递参数。我可能是错的,但这是我目前的理解。
真正困扰我的部分是开关。
当默认情况下无论如何都可以工作时,为什么需要情况 0 到 4。
即使 case 0 在没有参数的情况下是有意义的,为什么还要有 case 1-4 而不仅仅是继续 case 10。这是否有合理的论据,还是只是过早优化的情况?
【问题讨论】:
标签: php optimization laravel arguments