- 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;
}
}
2) Хули оно называется CreateClass?
3) Зачем break после return'а?
4) Зачем echo?
5) Reflection на таможне отобрали?
6) Начерта вообще этото им понадобилось?
5) Не обязательно ебаться с рефлекшинами, можно просто call_user_func_array
4) Echo хз, видать человек тупняк, хотя и не видать - человек написавший это тупой
3) Та же причина что и в 4
2) Название норм, создаёт экзепляр, вот и называется соответсвенно
1) А по какой причине оно должно было быть static?
2) Экземпляр, а не класс. Должно быть вроде CreateInstance
5) Тут new, а не вызов функции. call_user_func_array не сработает.
6) Это не просто создание произвольного класса (что разумно во многих местах), а с произвольными параметрами. Если это выбор конкретной реализации по каким-то параметрам (типа контроллера по url) - то зачем произвольная сигнатура; если вызов callback'а - то почему класс, а не callable; если это сериализация произвольных объектов - то начерта это в календаре.
Как и сказал @wvxvw я сначала подумал на жабу и только потом доллары разглядел.
Реализуется уже который раз подряд. Скоро за такое пора будет выкидывать на мороз.
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 или случаев, когда рефлексия недоступна хз почему, они и навернули сие чудо.
Ты про пусшкова чтоли?
Вне конкуренции.