Я нашел это странное заявление переключателя в 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);
Любые выгоды?
Возможно, это было переведено с языка, который имеет функцию перегрузки. Или они обнаружили, что в наиболее распространенных случаях было небольшое повышение производительности (предположительно, где $ args было 4 или меньше). –
Нет, это не ерунда .. язык, такой как C++, поддерживает эту и вызванную перегрузку функции, ** Полиморфизм ** может быть достигнут путем перегрузки –
@ NullPoiиteya Но PHP не имеет перегрузки функций. –