"PHP" / Говнокод #7585 Ссылка на оригинал

0

  1. 1
  2. 2
  3. 3
  4. 4
  5. 5
  6. 6
  7. 7
  8. 8
  9. 9
  10. 10
  11. 11
  12. 12
  13. 13
  14. 14
  15. 15
  16. 16
  17. 17
  18. 18
  19. 19
  20. 20
  21. 21
  22. 22
  23. 23
  24. 24
  25. 25
  26. 26
  27. 27
  28. 28
  29. 29
  30. 30
  31. 31
  32. 32
  33. 33
  34. 34
  35. 35
  36. 36
  37. 37
  38. 38
  39. 39
  40. 40
  41. 41
  42. 42
  43. 43
  44. 44
  45. 45
  46. 46
  47. 47
  48. 48
  49. 49
  50. 50
  51. 51
  52. 52
  53. 53
  54. 54
  55. 55
  56. 56
  57. 57
  58. 58
  59. 59
  60. 60
  61. 61
  62. 62
  63. 63
  64. 64
  65. 65
  66. 66
public function getObject()
	{
		$args = func_get_args();
		if (empty($args)) {
			$this->_throwException('wrong call of method - interface should be as 1st parameter');
		}

		$interface = array_shift($args);
		
		$class = $this->getInjection($interface);

        $argsCnt = count($args);
        if ($argsCnt == 0) {
            $object = new $class;
        }
        else if ($argsCnt == 1) {
            $object = new $class($args[0]);
        }
        else if ($argsCnt == 2) {
            $object = new $class($args[0], $args[1]);
        }
        else if ($argsCnt == 3) {
            $object = new $class($args[0], $args[1], $args[2]);
        }
        else if ($argsCnt == 4) {
            $object = new $class($args[0], $args[1], $args[2], $args[3]);
        }
        else if ($argsCnt == 5) {
            $object = new $class($args[0], $args[1], $args[2], $args[3], $args[4]);
        }
        else if ($argsCnt == 6) {
            $object = new $class($args[0], $args[1], $args[2], $args[3], $args[4], $args[5]);
        }
        else if ($argsCnt == 7) {
            $object = new $class($args[0], $args[1], $args[2], $args[3], $args[4], $args[5], $args[6]);
        }
        else if ($argsCnt == 8) {
            $object = new $class($args[0], $args[1], $args[2], $args[3], $args[4], $args[5], $args[6], $args[7]);
        }
        else if ($argsCnt == 9) {
            $object = new $class($args[0], $args[1], $args[2], $args[3], $args[4], $args[5], $args[6], $args[7], $args[8]);
        }
        else if ($argsCnt == 10) {
            $object = new $class($args[0], $args[1], $args[2], $args[3], $args[4], $args[5], $args[6], $args[7], $args[8], $args[9]);
        }
        else if ($argsCnt == 11) {
            $object = new $class($args[0], $args[1], $args[2], $args[3], $args[4], $args[5], $args[6], $args[7], $args[8], $args[9], $args[10]);
        }
        else if ($argsCnt == 12) {
            $object = new $class($args[0], $args[1], $args[2], $args[3], $args[4], $args[5], $args[6], $args[7], $args[8], $args[9], $args[10], $args[11]);
        }
        else if ($argsCnt == 13) {
            $object = new $class($args[0], $args[1], $args[2], $args[3], $args[4], $args[5], $args[6], $args[7], $args[8], $args[9], $args[10], $args[11], $args[12]);
        }
        else if ($argsCnt == 14) {
            $object = new $class($args[0], $args[1], $args[2], $args[3], $args[4], $args[5], $args[6], $args[7], $args[8], $args[9], $args[10], $args[11], $args[12], $args[13]);
        }
        else if ($argsCnt == 15) {
            $object = new $class($args[0], $args[1], $args[2], $args[3], $args[4], $args[5], $args[6], $args[7], $args[8], $args[9], $args[10], $args[11], $args[12], $args[13], $args[14]);
        }
        else {
    	   $this->_throwException('it looks like you use more than 15 arguments when trying to instantiate an object of class '.$class.' - that\'s ugly');
        }

        return $object;
	}

Запостил: webeith webeith, (Updated )

Комментарии (25) RSS

  • Мета Мета программирование.
    > trying to instantiate an object of class '.$class.' - that\'s ugly'
    воистину ugly
    Ответить
  • Ну заебали эту хуйню постить.
    Это не гк, а микрооптимизация. Ибо call_user_func_array() - МЕДЛЕННЫЙ!
    Потом если этот код конвертить в что-то бинарное, то скорее всего call_user_func* и прочие динамические фишки типа eval не пройдут.
    Так что -1 тебе.

    Update:
    А, еп, там new $Class ... ну тогда хз.
    Ответить
    • ну да, медленный, но не до такой степени, чтоб хуету городить. ну, и надо писать так, чтоб call_user_func_array вызывался как можно реже. это раз.
      автолоадеры пишутся не так. это два.
      репозитории тоже пишутся не так. это три.
      пишите интерфейсами, а не параметрами или именами классов/функций. это четыре.
      если ты используешь eval, то, скорее всего, минус тебе. в принципе, по рейтингу комментария это заметно. это пять.
      и да, во что бинарное ты собрался конвертить пхп? GUI приложения под винду - это моветон больший, чем твой сраный eval. это шесть.
      Ответить
      • 1 - ты мужа своего поучи программы писать
        2, 3, 4 - ниочем и мимо кассы
        eval это не мой, не использую
        > и да, во что бинарное ты собрался конвертить пхп

        А о программах типа perl2exe, python2exe, etc. мы не слышали? лох...
        Ответить
        • 1. о программах типа perl2exe, bat2exe и %любая_срань%2exe мы слышали, но никогда не думали воспринимать их всерьез. ибо разница есть между перлом/питоном и бинарниками. ну, и если опускаться до твоего высокого уровня ведения спора, то лох - мой оппонент
          2. муж моей жены смотрит на тебя, как на говно
          3. чего же ты насчет eval'а так возмущался, если он не твой и ты его не используешь?

          да и попроще бы вели беседы в интернетах с абсолютно незнакомыми людьми. глядишь - и минусов меньше было бы.
          Ответить
          • Слушай, "оппонент", а не соснуть бы тебе хуйца у своей жены. О серьезности таких программ вообще речи не было, а только сам факт их наличия.
            Ответить
            • ты знаешь, есть люди, которые едят других людей. так вот, тем первым, вполне возможно, не нравится, что вторые принимают аспирин. но в обсуждении чего угождно это не будет аргументом. точно так же, как и твой "факт наличия" этих программ. и да, можешь не пытаться кого-то троллить своими забавными оскорблениями из интернета.
              Ответить
        • > А о программах типа perl2exe, python2exe, etc. мы не слышали? лох...
          Где здесь php ?
          Куда проще и лучше изучить с++ чем делать из php бинарные предложения, сама идея идиотизм ...
          Ответить
      • а это не автолоадер и не репо, это примитивная гребаная фабрика. Сколько раз это постят, везде мусолят, что надо из аргсов делать структуру и уже эту структуру передавать

        и кстати один call_user_func_array намного быстрее всей этой сабжевой хуеты - странно, что там нет циклов на закуску
        Ответить
    • Суровый ты, наверное и на ковычках и именах переменных время в пхп экономишь... а умножение побитывым сдвигом делаешь
      Ответить
  • Правильный (читать "честный") message Exception'а в этом случае должен быть таким:

    $this->_throwException('it looks like you use more than 15 arguments when trying to instantiate an object of class '.$class.'. You can\'t do that because I don\'t want to write this ugly code any more');
    Ответить

Добавить комментарий

Переведи на "PHP", guest!

    А не использовать ли нам bbcode?


    8