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

    +157

    1. 1
    2. 2
    3. 3
    4. 4
    foreach ($account->lists as $list) {
    print "LIST Name: " . $list->name; echo '&nbsp'; echo '&nbsp'; echo '&nbsp'; print "LIST Id: " . $list->id;
    echo "<br>";
    }

    Не говоря о том, что особой разницы между print и echo в ПХП нет, стоит отметить, что после «nbsp» пропущены точки с запятыми и всё тело этого фора можно было бы вывести одной строчкой.

    Запостил: KEKC, 08 Ноября 2014

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

    • > echo '&nbsp';
      Вот же ваши точки с запятыми. Видимо, вам всё мало, да мало...

      > echo (в отличии от других языковых конструкций) не ведет себя как функция, поэтому не всегда может быть использована в контексте функции
      > В отличии от print, конечно же. Хотя оное, также считается конструкцией
      Ответить
      • А правда классно что в языке живут функция и конструкция для одинаковых задач? Живут бок-о-бок вот уже много версий, и наверное надо бы еще добавить в язык пару способов вывода текста. Ну так, для красоты.
        Ответить
        • да, есть еще heredoc ^^
          А вам завидно? :)
          Ответить
          • Эх, где-то тут был ГК о внезапностях print с Perl в главной роли. Может, анонимбовский был - потому удалён давно.
            Ответить
            • Perl / Говнокод 13478
              print 1 + 2 + 3;   # печать "6"
              print (1 + 2) + 3; # печать "3", а не "6"
              print(1 + 2 + 3);  # печать "6"

              Кого-то не нравятся кортежи в питоне?

              | НЕТ | anonimb84a2f6fd141, 26 июля 2013
              |аватара|
              Ответить
              • Оформление крутое.

                Там ещё комментарии были весёлые: https://archive.today/2z51Q
                Но перевёрстывать это, да ещё и с текстовыми представлениями аватаров мне лень.
                Ответить
              • вот это да. а в чем причина такого поведения?
                Ответить
                • Потому, что, как говорил Анонимус про пхп, в языке живут функция и конструкция для одинаковых задач.
                  Во втором случае скобки "забрали" 1+2 как аргумент print.
                  Ответить
                • print (1 + 2) + 3 == (print (1 + 2)) + 3
                  Ответить
          • А еще всё за пределами инструкций <? и ?> также выводится в аутпут. Закрался перевод строки после ?> -- и на тебе, юзер, перевод строки. Закрался в начале файла -- и на тебе фигу вместо кук, ибо заголовки уже ушли. Опытный пыхописты потому эту инструкцию в конце файла и вовсе не ставят. Честно говоря мне так завидно, что я подумываю стать пхпистом.
            Ответить
            • > Закрался перевод строки после ?> -- и на тебе, юзер, перевод строки.
              Неправда! Один перевод строки после ?> парсер срезает. Хотя... может быть это только в новых пыхах так.

              BOM мешал гораздо сильнее.
              Ответить
              • Если в разных версиях он резает разное количество то это еще смешнее.

                На самом деле пых это плохой шаблонизатор. Писать логику на плохом шаблонизаторе это всегда глупо.

                Ну про BOM: у Вас пыхскрипты в уникоде были?
                Ответить
                • > у Вас пыхскрипты в уникоде были
                  Если я и пишу скрипты на пыхе - само-собой они всегда в utf-8. Поэтому и залетел на BOM в своё время, из-за какого-то из виндовых редакторов.
                  Ответить
                  • Я грешным делом думал что BOM нужен только ради указывания байт-ордера для полного юникода (16, 32), что для утф-8 не бывает

                    Но педивикия говорит что бывает и для утф:
                    EF BB BF
                    Ответить
                    • Ололо никогда файлы в utf не сохранял?
                      Ответить
                      • BOM опционален
                        В моих UTF его нет
                        Ответить
                        • В виндовом блокноте - нет.
                          Ответить
                          • Я в вордпаде пишу
                            Ответить
                          • Ну а в линухе BOM вообще считают бесполезной хуитой и почти никогда не втыкают по-умолчанию. И правильно делают, имхо.
                            Ответить
                            • Это то мудачье которое до сих пор не хочет пользоваться utf с bom в питоне (pycharm его просто не поддерживает, хотя стандарт его разрешает).
                              Ответить
                              • Кошерный способ для utf-8 - игнорить BOM при чтении, не добавлять BOM при записи.

                                А не понимать его, и показывать как мусор - согласен, мудачьё.
                                Ответить
                              • Орлы?
                                Что я делаю не так?

                                http://postimg.org/image/6v2w7wrqn/

                                Первые 3 байта -- утфовый бом.
                                Вроде как все работает
                                Ответить
                    • > бывает и для утф
                      Ну, вообще говоря, он для всех представлений юникода допустим. И как раз таки позволяет их отличить друг от друга.
                      Ответить
                      • Главная его задача это все таки Byte Order указать)
                        Ответить
                        • А в utf8 он может быть разный?
                          Ответить
                          • Нет.

                            Имено по-этому я и думал что UTF-8 не бывает с BOM.
                            Я знал только 4 вида бома:
                            Unicode 16: BE
                            Unicode 16: LE
                            Unicode 32: BE
                            Unicode 32: LE

                            Такой вот я ламер
                            Ответить
                            • Устроили какой-то пиздец с этими формами записи юникода, вот честно. Да еще и жаба своего дерьмеца добавила - modified utf-8.
                              Ответить
                              • Вика знает про CESU-8 — это UTF-16, закодированная по тому же алгоритму, что и UTF-8, только в UTF-8 в качестве исходной берётся UCS-2, а не UTF-16.

                                А ещё некоторый софт путает UCS-2 с UTF-16.

                                В RFC было две вореции спецификации UTF-8: полный диапазон (максимум шесть байтов в UTF-8) и урезанный (максимум четыре байта в UTF-8).

                                Мистер Мускул внёс ещё одну неожиданность: utf8 в декодированном виде у него занимает 24 бита, а то, что декодируется в 32 бита (в полноценный UCS-4) в нём зовётся utf8mb4, чтобы не было скучно.
                                Ответить
                              • Modified utf-8 порождён питушиными строками с завершающим нулём. В Паскале есть binary-safe строки, даже в PHP есть, и только крестобляди и жабопитухи страдают.
                                Ответить
                                • > Modified utf-8 порождён питушиными строками с завершающим нулём.
                                  Это одна фича. А там еще вторая есть - это фактически utf-8 over ucs-2 (юникодный символ может занимать более одного 16-битного жабьего чара, но каждый чар кодирутся в utf-8 отдельно).
                                  Ответить
                                  • > юникодный символ может занимать более одного 16-битного жабьего чара

                                    А разве это (когда для некоторых символов используются суррогаты из нескольких 16-битных чаров) не UTF-16?

                                    В таком случае жабья кодировка modified utf-8 — это и есть CESU-8, но только с дополнительным костылём для замены нулевого символа на ненулевой.
                                    Ответить
                                    • Там вроде бы как раз суррогаты. Я не разбирался. Благо жаба умеет и в человеческий utf-8.
                                      Ответить
                              • Где это в жабе используется-то?
                                Ответить
                                • На самом деле почти нигде:
                                  https://en.wikipedia.org/wiki/UTF-8#Modified_UTF-8

                                  In normal usage, the Java programming language supports standard UTF-8 when reading and writing strings through InputStreamReader and OutputStreamWriter. However it uses Modified UTF-8 for object serialization, for the Java Native Interface, and for embedding constant strings in class files.

                                  The dex format defined by Dalvik also uses the same modified UTF-8 to represent string values.
                                  Ответить
                                  • Зачем в jni именно utf8 с индексом за O(длина)?
                                    Ответить
                                • В JNI.
                                  Ответить
                                  • А в JNI ведь это ввели для совместимости с сишечкой, которая не умеет хранить нули в строках?
                                    Ответить
                                    • > для совместимости с сишечкой
                                      Ну а для чего еще? Эти злоебучие asciiz строки куда только не протащили.
                                      Ответить
                                      • Скольких бы костылей удалось избежать, если бы JNI изначально рассчитывали на Паскаль.
                                        Ответить
    • Не говоря о том, что имя не экранируется и засирает верстку, не говоря о том что верстка получается совершенно выврвиглазная с пробелами и БРами, не говоря о том этот код одинаково мерзок как программисту так и верстальщику, так вот не говоря об этом все же хочется сказать что про такое феерическое дерьмо и говорить-то не хочется
      Ответить
    • vanished
      Ответить
    • Такая холодная, но такая нежная. Так приятно чувствовать его заботу.
      Ответить

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