- 01
- 02
- 03
- 04
- 05
- 06
- 07
- 08
- 09
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
switch(count($Args)) {
case 0:
$Result = new $ClassName; break;
case 1:
$Result = new $ClassName($Args[0]); break;
case 2:
$Result = new $ClassName($Args[0], $Args[1]); break;
case 3:
$Result = new $ClassName($Args[0], $Args[1], $Args[2]); break;
case 4:
$Result = new $ClassName($Args[0], $Args[1], $Args[2], $Args[3]); break;
case 5:
$Result = new $ClassName($Args[0], $Args[1], $Args[2], $Args[3], $Args[4]); break;
case 6:
$Result = new $ClassName($Args[0], $Args[1], $Args[2], $Args[3], $Args[4], $Args[5]); break;
case 7:
$Result = new $ClassName($Args[0], $Args[1], $Args[2], $Args[3], $Args[4], $Args[5], $Args[6]); break;
case 8:
$Result = new $ClassName($Args[0], $Args[1], $Args[2], $Args[3], $Args[4], $Args[5], $Args[6], $Args[7]); break;
default:
throw new Exception();
}
Взято из форума Vanilla 2...
И еще в одном файле подобное library/core/class.dispatcher.php (со строки 267).
Александр Михалицын 24.07.2010 14:20 # 0
if ($Count == 0) {
$Controller->$ControllerMethod();
} else if ($Count == 1) {
$Controller->$ControllerMethod($Args[0]);
} else if ($Count == 2) {
$Controller->$ControllerMethod($Args[0], $Args[1]);
} else if ($Count == 3) {
$Controller->$ControllerMethod($Args[0], $Args[1], $Args[2]);
} else if ($Count == 4) {
$Controller->$ControllerMethod($Args[0], $Args[1], $Args[2], $Args[3]);
} else if ($Count == 5) {
$Controller->$ControllerMethod($Args[0], $Args[1], $Args[2], $Args[3], $Args[4]);
} else if ($Count == 6) {
$Controller->$ControllerMethod($Args[0], $Args[1], $Args[2], $Args[3], $Args[4], $Args[5]);
} else if ($Count == 7) {
$Controller->$ControllerMethod($Args[0], $Args[1], $Args[2], $Args[3], $Args[4], $Args[5], $Args[6]);
} else if ($Count == 8) {
$Controller->$ControllerMethod($Args[0], $Args[1], $Args[2], $Args[3], $Args[4], $Args[5], $Args[6], $Args[7]);
} else if ($Count == 9) {
$Controller->$ControllerMethod($Args[0], $Args[1], $Args[2], $Args[3], $Args[4], $Args[5], $Args[6], $Args[7], $Args[8]);
} else {
$Controller->$ControllerMethod($Args[0], $Args[1], $Args[2], $Args[3], $Args[4], $Args[5], $Args[6], $Args[7], $Args[8], $Args[9]);
}
Это из class.dispatcher.php.
TiGR 24.07.2010 19:26 # +1
Александр Михалицын 25.07.2010 07:22 # +1
class A {
private function __construct($args) { /* тут обрабатываем массив аргументов */ }//конструктор прайвит - то есть извне объект создать не получится.
public static function factory() {
$args = func_get_args();
return new A($args);
}
}
$b = A::factory($a1, $a2, $a3);
TiGR 25.07.2010 13:17 # 0
Без смены API первоначальный код оптимизировать никак?
Александр Михалицын 25.07.2010 13:19 # 0
ReallyBugMeNot 26.07.2010 15:59 # 0
а что будет если ненужным параметрам присваивать null?
Lure Of Chaos 26.07.2010 17:21 # 0
guest 08.07.2011 15:36 # 0
Понятно, это всего лишь микрооптимизация.
Сейчас там вместо этого косяка:
Но подобные косяки можно встретить и вдругих местах: library/core/class.factory.php L:195
И тут для специально для "исследователей" говнокода, тоже оставили комментарий:
Lure Of Chaos 24.07.2010 14:25 # +1
bober_maniac 24.07.2010 16:29 # 0
striker 25.07.2010 02:05 # +1
Анонимус 25.07.2010 02:48 # +2
шедевр непонимания назначения исключений. Так вот ты какое -- юзание современных технологий в пыхе
AxisPod 26.07.2010 07:05 # 0
Lure Of Chaos 26.07.2010 15:12 # +1
Мистер Хэнки 26.07.2010 12:39 # +1
Lure Of Chaos 26.07.2010 17:24 # +1
Werdn 26.07.2010 23:08 # +2
Александр Михалицын 27.07.2010 11:14 # 0
Werdn 27.07.2010 14:19 # 0