- 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
- 31
- 32
- 33
- 34
- 35
- 36
- 37
- 38
- 39
- 40
- 41
protected function CreateClass($className, $params) {
switch (count($params)) {
case 0:
return new $className();
break;
case 1:
return new $className($params[0]);
break;
case 2:
return new $className($params[0], $params[1]);
break;
case 3:
return new $className($params[0], $params[1], $params[2]);
break;
case 4:
return new $className($params[0], $params[1], $params[2], $params[3]);
break;
case 5:
return new $className($params[0], $params[1], $params[2], $params[3], $params[4]);
break;
case 6:
return new $className($params[0], $params[1], $params[2], $params[3], $params[4], $params[5]);
break;
case 7:
return new $className($params[0], $params[1], $params[2], $params[3], $params[4], $params[5], $params[6]);
break;
case 8:
return new $className($params[0], $params[1], $params[2], $params[3], $params[4], $params[5], $params[6], $params[7]);
break;
case 9:
return new $className($params[0], $params[1], $params[2], $params[3], $params[4], $params[5], $params[6], $params[7], $params[8]);
break;
case 10:
return new $className($params[0], $params[1], $params[2], $params[3], $params[4], $params[5], $params[6], $params[7], $params[8], $params[9]);
break;
default:
echo "Too many arguments";
return null;
break;
}
}
wvxvw 24.10.2012 15:39 # +5
guest 02.11.2012 07:48 # 0
Vasiliy 02.11.2012 09:53 # 0
niggerzilla 24.10.2012 15:40 # 0
2) Хули оно называется CreateClass?
3) Зачем break после return'а?
4) Зачем echo?
5) Reflection на таможне отобрали?
6) Начерта вообще этото им понадобилось?
Zmi 24.10.2012 15:52 # 0
5) Не обязательно ебаться с рефлекшинами, можно просто call_user_func_array
4) Echo хз, видать человек тупняк, хотя и не видать - человек написавший это тупой
3) Та же причина что и в 4
2) Название норм, создаёт экзепляр, вот и называется соответсвенно
1) А по какой причине оно должно было быть static?
niggerzilla 24.10.2012 16:19 # +1
2) Экземпляр, а не класс. Должно быть вроде CreateInstance
5) Тут new, а не вызов функции. call_user_func_array не сработает.
6) Это не просто создание произвольного класса (что разумно во многих местах), а с произвольными параметрами. Если это выбор конкретной реализации по каким-то параметрам (типа контроллера по url) - то зачем произвольная сигнатура; если вызов callback'а - то почему класс, а не callable; если это сериализация произвольных объектов - то начерта это в календаре.
Vasiliy 24.10.2012 15:50 # +1
Steve_Brown 24.10.2012 15:57 # +1
bormand 24.10.2012 16:01 # +3
3.14159265 24.10.2012 16:10 # +2
Как и сказал @wvxvw я сначала подумал на жабу и только потом доллары разглядел.
bormand 24.10.2012 16:31 # 0
Vasiliy 24.10.2012 16:38 # +3
eth0 24.10.2012 19:26 # +1
Реализуется уже который раз подряд. Скоро за такое пора будет выкидывать на мороз.
GhOsTMZ 24.10.2012 16:53 # +2
SunnyMagadan 24.10.2012 19:05 # 0
if (class_exists("ReflectionClass") ){
$reflectionObj = new ReflectionClass($helper);
if (method_exists($reflectionObj,"newInstan ceArgs")){
$var = $reflectionObj->newInstanceArgs($arguments);
}
else {
$var = $this->CreateClass($helper,$arguments);
}
}
else {
$var = $this->CreateClass($helper,$arguments);
}
Видимо, по причине обратной совместимости со старыми версиями PHP или случаев, когда рефлексия недоступна хз почему, они и навернули сие чудо.
Lure Of Chaos 24.10.2012 19:14 # +1
bormand 24.10.2012 20:19 # +2
TarasB 24.10.2012 22:21 # +4
LispGovno 24.10.2012 22:26 # −1
Ты про пусшкова чтоли?
TarasB 24.10.2012 23:18 # +1
LispGovno 24.10.2012 22:13 # −1
3.14159265 25.10.2012 22:11 # +3
Вне конкуренции.
bormand 25.10.2012 22:55 # +1
guest 26.10.2012 10:23 # 0
SunnyMagadan 26.10.2012 10:52 # +1
TarasB 26.10.2012 10:59 # +1
Steve_Brown 26.10.2012 11:59 # +2
eth0 26.10.2012 12:42 # +2
TarasB 26.10.2012 13:24 # +3
Johnny 21.12.2012 16:35 # 0