ho trovato questo switch strano in Laravel 5 core:Non è un'affermazione di questo 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);
C'è qualche motivo per cui forse deciso di costruire una cosa del genere invece di utilizzare questo?
return call_user_func_array([$instance, $method], $args);
Eventuali vantaggi?
Forse questo è stato tradotto da una lingua che ha sovraccarico di funzione. Oppure, hanno scoperto che c'era un leggero aumento delle prestazioni nei casi più comuni (presumibilmente dove $ args era 4 o meno). –
No, questo non ha senso ... linguaggio simile al C++ supporta questo e il suo sovraccarico di funzioni chiamato, ** Il polimorfismo ** può essere ottenuto attraverso l'overloading –
@ NullPoiиteя Ma PHP non ha sovraccarico di funzioni. –