- 01
- 02
- 03
- 04
- 05
- 06
- 07
- 08
- 09
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
- 26
- 27
- 28
- 29
- 30
switch ( count($args) )
{
case 0:
return $obj->$method( );
case 1:
return $obj->$method( $args[0] );
case 2:
return $obj->$method( $args[0], $args[1] );
case 3:
return $obj->$method( $args[0], $args[1], $args[2] );
case 4:
return $obj->$method( $args[0], $args[1], $args[2], $args[3] );
case 5:
return $obj->$method( $args[0], $args[1], $args[2], $args[3], $args[4] );
case 6:
return $obj->$method( $args[0], $args[1], $args[2], $args[3], $args[4], $args[5] );
case 7:
return $obj->$method( $args[0], $args[1], $args[2], $args[3], $args[4], $args[5], $args[6] );
case 8:
return $obj->$method( $args[0], $args[1], $args[2], $args[3], $args[4], $args[5], $args[6], $args[7] );
case 9:
return $obj->$method( $args[0], $args[1], $args[2], $args[3], $args[4], $args[5], $args[6], $args[7], $args[8] );
case 10:
return $obj->$method( $args[0], $args[1], $args[2], $args[3], $args[4], $args[5], $args[6], $args[7], $args[8], $args[9] );
case 11:
return $obj->$method( $args[0], $args[1], $args[2], $args[3], $args[4], $args[5], $args[6], $args[7], $args[8], $args[9], $args[10] );
case 12:
return $obj->$method( $args[0], $args[1], $args[2], $args[3], $args[4], $args[5], $args[6], $args[7], $args[8], $args[9], $args[10], $args[11] );
}
throw new MWException( __CLASS__.": too many arguments to method called in ".__METHOD__ );
arth 16.04.2014 20:29 # 0
Правда исключение в конце зря бросил, можно было все таки call_user_func_array заюзать для остальных случаев, хоть он и тормозной...
bormand 16.04.2014 21:01 # +8
3.14159265 16.04.2014 21:21 # +5
Я б на трёх-четырех остановился.
В этом даже профит есть - такой полезный фильтр от быдлокодеров.
brutushafens 16.04.2014 22:49 # 0
3.14159265 16.04.2014 23:08 # +3
Тут уже был тип, который жаловался что VS не даёт ему написать более 128 вложенных ifов.
>А потом не обидно будет?
Нет. Ограничения на самом деле стимулируют фантазию и умственную деятельность в целом.
В множестве трудов описывались причины по которым так или иначе более трёх аргументов (и именованные) ведут к неправильному стилю кодинга. Правило 5 +/- 2, сиплюструп, итд.
3 аргумента вариаций в котором они могут быть написаны 3!=6, 4! - 24, итд. В памяти удержать сиё - невозможно.
В функциональщине рассудительные математики вообще свели всё к одному.
bormand 16.04.2014 23:14 # 0
brutushafens 16.04.2014 23:20 # 0
laMer007 16.04.2014 21:41 # +5
3.14159265 16.04.2014 22:16 # 0
И вроде кресты были (бустятинка с переменным числом крестошаблонов), и еще какой-то язык без вараргов, точно не помню.
eth0 17.04.2014 19:45 # 0
WGH 16.04.2014 23:26 # 0
inkanus-gray 16.04.2014 23:47 # 0
WGH 16.04.2014 23:50 # +1
inkanus-gray 16.04.2014 23:57 # 0
WGH 17.04.2014 00:25 # +2
guest 18.04.2014 10:43 # 0
bormand 18.04.2014 11:07 # 0
3.14159265 18.04.2014 13:39 # +4