Опитимизация call_user_func_array
Неужели мифические наносекунды оправдывают этот говнокод?
(взято из kohana)
PHP:
switch ($num_args)
{
case 0:
if (in_array($method, array('open_paren', 'close_paren', 'enable_cache', 'disable_cache')))
{
// Should return ORM, not Database
$this->db->$method();
}
else
{
// Support for things like reset_select, reset_write, list_tables
return $this->db->$method();
}
break;
case 1:
$this->db->$method($args[0]);
break;
case 2:
$this->db->$method($args[0], $args[1]);
break;
case 3:
$this->db->$method($args[0], $args[1], $args[2]);
break;
case 4:
$this->db->$method($args[0], $args[1], $args[2], $args[3]);
break;
default:
// Here comes the snail...
call_user_func_array(array($this->db, $method), $args);
break;
}
(взято из kohana)