1. PHP / Говнокод #7585

    +152

    1. 01
    2. 02
    3. 03
    4. 04
    5. 05
    6. 06
    7. 07
    8. 08
    9. 09
    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, 18 Августа 2011

    Комментарии (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');
      Ответить
    • Уже было много раз.( Топим.
      Ответить
    • зто было на говонокоде уже много раз во всех разделах динамических языков
      http://govnokod.ru/3051
      особенно в разделе PHP
      Ответить

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