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

    +159

    1. 1
    2. 2
    3. 3
    4. 4
    5. 5
    6. 6
    7. 7
    8. 8
    9. 9
    function decode_php_abbr($abbr){
    	if(strpos($abbr,'PHP')!==false){
    		$abbr=str_replace('PHP','PHP: Hypertext Preprocessor',$abbr);
    		decode_php_abbr($abbr);
    	}
    	else echo $abbr;
    }
    
    decode_php_abbr('PHP');

    Расшифровываем аббревиатуру PHP или когда на работе немного скучно.

    Запостил: VokaMut, 13 Января 2015

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

    • смертельный трюк, код без пробелов вне строк
      Ответить
      • function decode_php_abbr($abbr){
        	if(strpos($abbr,'PHP: Hypertext Preprocessor')!==false){
        		$abbr=str_replace('PHP: Hypertext Preprocessor','PHP: Hypertext Preprocessor: Hypertext Preprocessor',$abbr);
        		decode_php_abbr($abbr);
        	}
        	else echo $abbr;
        }
        decode_php_abbr('PHP: Hypertext Preprocessor');
        Ответить
        • тогда давай уж так:
          function decode_php_abbr($abbr){
          	if(strpos($abbr,'PHP: Hypertext Preprocessor: Hypertext Preprocessor')!==false){
          		$abbr=str_replace('PHP: Hypertext Preprocessor: Hypertext Preprocessor','PHP: Hypertext Preprocessor: Hypertext Preprocessor: Hypertext Preprocessor',$abbr);
          		decode_php_abbr($abbr);
          	}
          	else echo $abbr;
          }
          decode_php_abbr('PHP: Hypertext Preprocessor: Hypertext Preprocessor');
          Ответить
        • while(strpos($abyr,'PHP')!==false){
              $abyr=str_replace('PHP','PHP: Hypertext Preprocessor',$abyr);
              decode_php_abbr($abyr);
          }
          Ответить
          • и после цикла:
            echo $abyr;

            Что бы вывелась всё таки когда расшифруется)
            Ответить
    • Сразу видно PHP-шника. Сишники бы полиномы вычисляли.
      Ответить
    • Когда на пхп начнут использовать паттерны? Ну там декоратор или фабрику?
      Ответить
      • А если найду?

        > Ну там декоратор
        http://framework.zend.com/manual/1.12/ru/zend.form.standardDecorators.html

        > или фабрику
        http://framework.zend.com/manual/1.12/ru/zend.db.adapter.html
        http://framework.zend.com/manual/1.12/ru/zend.uri.chapter.html
        http://framework.zend.com/manual/1.12/ru/zend.paginator.usage.html
        http://framework.zend.com/manual/1.12/ru/zend.navigation.pages.html
        Ответить
        • Интересно. Для чего скриптовому языку, с преждевременным htmlсемяизвержением, нужны ООП-смазки?
          Ну понятно, что это, как бы, придаёт плавное скольжение следующим использователям кода... то, сё. Но ведь это такой дирижабль получается. С бассейнами, полями для гольфа и с футбольной командой. Как же они взлетают со всей этой хернёй?
          Ответить
      • Паттерна "фабрика" не существует.

        Есть "абстрактная фабрика", а есть "фабричный метод" и это две большие разницы.
        Ответить
        • > большие
          Ой, ну прям большая-большая разница... В одном случае - один метод и, соответственно, один тип создаваемых продуктов, в другом - несколько. В чём там еще отличия то?
          Ответить
          • Разница в самой сути паттерна.

            Фабричный метод скрывает от нас процесс конструирования объекта выбирая конкретный класс и, возможно, заполняя его нужными параметрами если это нельзя сделать в конструкторе (например нельзя в конструкторе зарегистрировать свежесозданный объект, ибо утекание ссылки будет, а в методе фабричном -- можно)

            Абстрактная фабрика же дает нам стратегию создания целого семейства объектов отвязывая нас от конкретной имплементации (хрестоматийный вариант это WidgetFactory со всякими createButton которые вернут KDEButton, GnomeButton итд).

            Ну а по большому-то счету все паттерны про одно и тоже)
            -----

            Боже, какой я ООПдрочер:-/
            Ответить
            • чтобы ты не говорил - я тебя не слушаю

              +++++++++++

              в пхп паттерны ненужны. на говнокодят макаки и ладно.
              Ответить
              • А я видал раз как ПХПшника спросили на собеседовании зачем нужен синглтон.

                Он сказал что в больших проектах он нужен, а в маленьких, пожалуй нет.
                Ответить
                • то есть он ответил на другой вопрос. логика разрушена. небось анеме пересмотрел или\и дрочил много
                  Ответить
                • - Зачем нужен синглтон?
                  - И правда... нахуй он нужен то?
                  - Вы приняты!
                  Ответить
                  • а между прочим синглтоны почти не нужны. тех кто их сует везде и всюду - расстрел. так что я бы этого пхпешника может быть и взял, еслибы он пояснил почему они вредны
                    Ответить
                    • Если знание о scope вынесено из кода куда-то в DI контейнер и там написано что класс синглтон то это не так уж плохо. А если в коде везде пишут MyClass.getInstance() то нахуй конечно
                      Ответить
                    • присоединяюсь к орде ненависти
                      Ответить
                    • в пхп который умирает каждые 30 секунд нужно задуматься над необходимостью. Но все же есть случаи когда нужен
                      Ответить
                  • Разве #include <iostream>, своего рода, не синглтон?
                    В любом проекте есть библиотечные функции/методы, которые наследовать бессмысленно и глупо. Конечно, если не аопнутый во всю голову.
                    Ответить
                    • > #include
                      Препроцессор - это одна из самых больших крестопроблем. Именно благодаря ему крестопроекты собираются по полчаса (либо требуют идиотские костыли типа precompiled headers) и могут случайно нарушить ODR. По сравнению с ним синглтоны - безобидные пушистые мышки.
                      Ответить
                    • > наследовать
                      Наследование нинужно. Да и никакого наследования не существует. Это всего лишь... удобный сахарок для агрегации и форвардинга.
                      Ответить
                      • Ладно, хватит низвергать ООП, пойду лучше посмотрю на няшек перед сном.
                        Ответить
                        • Поделись няшками, не жадничай.
                          Ответить
                          • Ююшки.
                            Ответить
                            • Давай так: Запости имена няшек
                              Ответить
                              • Я вечно путаю, что у японцев имя, а что фамилия... Юи, Юкари, Юдзуко в общем.
                                Ответить
                                • Плюсанул за хороший вкус.
                                  Ответить
                                • итить.
                                  > Yuyushki
                                  а я уж подумал борманд матом ругается и вообще охренел. А в итоге оказалось мои мысли выдают мою испорченность
                                  Ответить
                                  • Борманд матом не ругается, он на нём разговаривает. Но как-то двусмысленно получилось, да.
                                    Ответить
                            • >шк
                              Ты хоть представляешь, что теперь миллионы поливаноблядей готовы сделать с твоим грешным телом?
                              Ответить
                              • А в России точно есть миллионы анимешников, да еще и любящих писать по-поливановски?
                                Ответить
                              • а как вместо шк?
                                сх?
                                Ответить
                                • Думаю, надо было сразу иероглифами писать, чтобы гурманов не обидеть.
                                  Ответить
                                  • > сразу иероглифами писать
                                    ゆゆ式 Перевод у гуглотранслейта суровый...
                                    Ответить
                                    • Некрофилы-некрофилушки. Понасмотрют этого вашего онеме и грабят курганы.
                                      Ответить
                                • Нет, шк = ськ.
                                  Ответить
                • >> ПХПшника спросили на собеседовании зачем нужен синглтон.
                  > Он сказал что в больших проектах он нужен, а в маленьких, пожалуй нет.

                  а вдруг он ретроград, не расслышал и подумал "зачем нужен Monotone?"
                  Ответить
                • ПХПшника спросили на собеседовании зачем нужен синглтон.
                  Он сказал, что синглтон не нужен, потому что в ПХП и без этого есть @include_once
                  Ответить
                • Ребята... Вы как в той самой разминке из квн:
                  - ПХПшника спросили на собеседовании зачем нужен синглтон...
                  (30 тиков на ответ)
                  Ответить
                  • - ПХПшника спросили на собеседовании зачем нужен синглтон?..
                    (30 тиков на ответ)
                    - Получать ролтон за каждую строчку кода

                    - Тугодум!
                    Ответить
                    • > ролтон
                      Похвально. Сразу видно, что Царь, а не заедушный питушок.

                      роллтон
                      Ответить
                      • Учите битрикс!
                        http://gadgetsin.com/uploads/2010/11/ramen_noodle_cup_usb_humidifier.jpg
                        Ответить
            • Но ведь абстрактная фабрика тоже скрывает от нас процесс конструирования объектов, выбирая конкретные классы и, возможно, заполняя их нужными параметрами.

              Я сейча уже на три раза перечитывал эти определения и на русском и на английском, и так и не понял, почему фабричный метод не является всего лишь частным случаем абстрактной фабрики...
              Ответить
              • Ну может и является, но все же за этими словами обычно стоят разные сценарии использования, которые я описал.

                Для аналогии: можно-ли назвать булеву переменную конечным автоматом?
                Ответить
                • бп не частный случай ка и наоборот. ты упорот и просто продолжаешь стоять на своем после слива любой ценой
                  Ответить
                  • Конечно продолжаю. Я люблю ляпать хуйню, вступать в специальную олимпиаду и выигрывать. Видишь: ты втянулся
                    Ответить
                • > разные сценарии использования
                  Фабричный метод: клиент хочет запилить некую хуёвину, имеющую известный ему интерфейс. Если у него есть какие-то требования к этой хуёвине - их совсем мало, и они передаются прямо в метод. Конкретный класс этой хуёвины и большую часть её настроек определяет фабричный метод.

                  Абстрактная фабрика: клиент хочет запилить несколько взаимосвязанных хуёвин, имеющих известные ему интерфейсы. Если у него есть какие-то требования к этой хуёвине - их немного, и они передаются прямо фабрике. Конкретные классы этих хуёвин и большую часть их настроек определяет абстрактная фабрика.

                  Строитель: клиент хочет запилить некую хуёвину, имеющую известный ему интерфейс. При этом он, сука, привередливая, и у него куча требований к ней: "чтоб сиськи третьего размера, готовить умела и мозг не ебала!". Конкретный класс этой хуёвины и какую-то часть её настроек определяет строитель.

                  Там, имхо, настолько тонкие границы между юзкейсами этих трёх паттернов, что их почти не видно... И разве гибрид фабрики и билдера не имеет права на жизнь? В общем-то можно было описать все эти 3 случая одним паттерном и не париться...
                  Ответить
                  • DI: клиент хотел бы запилить некую хуёвину, имеющую известный ему интерфейс, но вдруг вспомнил, что её ему подсунули уже при рождении.
                    Ответить
                  • Паттерн Чебуратор.
                    Ответить
                  • Жду издание книги о паттернах за авторством Борманда.
                    Ответить
                    • Блин, этих книг и статей о паттернах уже столько понапилили, что влом делать еще одну... Разве что сделать её отрезвляюще-практичной, с объяснениями на хуях и джигурдах, без определений и поклеив все слишком схожие паттерны в группы...
                      Ответить
                  • Синглтон: разраб наивно думает, что инстанс будет только один и хуячит getInstance() на каждый чих... Через год требуются 2 инстанса, разрабу приходится рефакторить всё к хуям, он спивается, от него уходят жена и друзья. В итоге получаем одиночку аля singleton.
                    Ответить
                    • Doubleton!
                      Ответить
                    • Тру поцоны открывают конструктор создают декоратор помещают туда пулл сингелтонов автозаменой заменяют сингелтон->getInstance() на декоратор->getInstance()
                      Ответить
                      • DI.
                        Ответить
                        • Ну да, ну вот в этих ваших спрингах так и случается. Ты приходишь вспринг и говоришь "дай-ка мне инстанс класса Foo", и получаешь (в зависимости от настроек):
                          * каждый раз одно и тоже (синглтон)
                          * по инстансу на запрос (храница в реквесте)
                          * каждый раз новый
                          * результат работы хитрого фабричного метода
                          * по одному на поток (практически тозе самое что и с реквестом)
                          * по одному на приложение
                          * ваш вариант
                          * ничего из выше перечисленного

                          офигенно же!
                          Ответить
        • > это две большие разницы

          Возможно, вы имели в виду это две большие задницы
          Ответить
          • Эстафета низвержения ооп продолжается? ;)
            Ответить
        • не в пхп
          Ответить
      • нахуй в этом высере еще и паттерны?
        Ответить

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