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

    −2

    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
    <ul class="news-list">
    
        <?php
    global $news_list_toc;
    foreach ($news_list_toc as $i => $d) {
        echo <<<NI_ITEM
        <li class="news-list-item">
            <div class="news-list-item-date">
                {$d['date']}
            </div>
            <div class="news-list-item-title">
                <a href="?fetch=news&with=the&id={$i}">{$d['title']}</a>
            </div>
        </li>
    NI_ITEM;
    
        } ?>
    
    </ul>

    Нашел при рефакторинге своего проекта. Чем, чем я думал, когда писал это? У нормальных людей такого органа кажется и нету...

    Показывать на собеседованиях с вопросом "что вам нравится в этом коде?"

    Запостил: Arris, 02 Августа 2018

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

    • Да, разумеется, это html-файл шаблона :)
      Ответить
    • И хуле? Внимания не хватает? Хочешь, чтобы вокруг тебя все раскукарекались, мол, "ах, фигурные скобки, ах, три знака "меньше", куд-кудах"?
      Ответить
      • Щас попробуем. Ко-ко-ко heredoc куд-кудах-тах-тах! Ко-ко-ко, можно было обойтись без echo, просто закрыв тег! Кукареку!

        Я правильно кукарекаю?
        Ответить
    • what is the difference between markup and programming?
      “<?php” and “echo”
      Ответить
      • We are using php_vld extension to see opcodes: https://derickrethans.nl/projects.html#vld

        1. Source:
        <?php echo "Hello";

        Output:
        line     # *  op                           fetch          ext  return  operands
        ---------------------------------------------------------------------------------
           1     0  >   ECHO                                                     'Hello'
           2     1    > RETURN                                                   1


        2. Source:
        Hello
        Yes, without "<?php " tag.
        Output:
        line     # *  op                           fetch          ext  return  operands
        ---------------------------------------------------------------------------------
           1     0  >   ECHO                                                     'Hello'
                 1    > RETURN                                                   1


        3. Source:
        <?php print "Hello";

        Output:
        line     # *  op                           fetch          ext  return  operands
        ---------------------------------------------------------------------------------
           1     0  >   PRINT                                            ~0      'Hello'
                 1      FREE                                                     ~0
           2     2    > RETURN                                                   1


        4. Source:
        <?php printf("Hello");

        Output:
        line     # *  op                           fetch          ext  return  operands
        ---------------------------------------------------------------------------------
           1     0  >   SEND_VAL                                                 'Hello'
                 1      DO_FCALL                                      1          'printf'
           2     2    > RETURN                                                   1
        Ответить
      • “?> some text <?php ” sequence is actually a synonym for “echo "some text";”
        Their bytecode representations are the same.
        Ответить
      • There is no difference in this particular case:)

        I have strong feeling that view should be UI-agnostic as much, as possible. One may use REST or HTML or PDF to "render" stuff, so you should not have HTML hardcoded into your templaes
        Ответить
    • омг, еще один шобланизатор из хередок
      Ответить
      • Откуда тебе знать про хередок? Ты же на "PHP" не пишешь.
        Ответить
        • Откуда тебе знать что хередок существует в куче япов, включая перл и руби? Ты же ничего кроме "PHP" не знаешь.

          зы: была слаба на хередок
          Ответить
          • > в куче япов

            Я не обязан знать прыщеруби и прыщеперлы. В нормальных языках, кроме "PHP", где есть ещё хередок?
            Ответить
            • Разве есть нормальные языки кроме "PHP"?
              Ответить
              • Будем честны - нет. Столкнулся с "Java", и впечатление моё таково, что большего говна я ещё не видел: какие-то "import"-ы, какие-то "context"-ы, какие-то классы и методы, которые я в "PHP" обходил десятой дорогой, какая-то путаница - не знаешь, что откуда вызывается, что к чему относится... Несравнимо с влажненьким процедурненьким кодом "PHP" и "JavaScript", где код действий описывается в той же последовательности, в которой эти действия и выполняются; где нет завихрений, коловращений, подвыпердов...
                Ответить
                • Тебя не заёбывает постоянно доллар писать?
                  Ответить
                  • Что может заебать больше, чем прописывание "import"-ов, "context"-ы и компиляция по пять минут?
                    Ответить
                    • ..оcобенно в Notepad++

                      зы: что такое context?
                      Ответить
                      • >>>"оcобенно в Notepad++"

                        Ну, а нахуй мне "Android Studio" с её перегруженным интерфейсом?

                        >>>"что такое context?"

                        Пёс его знает. Для меня, не смыслящего в "Java", это некая поебень, которая мешает компилировать проект и проблемы с которой решаются путём прописывания "getApplicationContext()", ничего для меня не значащего.
                        Ответить
                        • Под андроид писал? Почему java а не kotlin, кстати? Старый проект?

                          >>getApplicationContext
                          Это часть Android SDK, а не джавы как таковой
                          Ответить
                          • Малыш, кисуля, пуся - я ебал и "Java", и "Kotlin", и всё, с ними связанное; но мне приходится вносить расширяющие возможности изменения в "Java"-код модуля для "React Native" (который я тоже подъёбывал за донельзя искажённый синтаксис "JavaScript"), и мне порядком поднадоело третий день рыться по помоечным форумам и документации в поиске решений не стоящих и волоса с моих яиц "проблем", на которые постоянно указывает компилятор.
                            Ответить
                            • скажи, почему после любого твоего коммента мне хочется побрызгать освежителем воздуха?
                              Ответить
                  • в пхп много чего лишнего надо писать

                    Вообще язык пхп старается всегда быть максимально вербозным, чтобы программисту надо было писать как можно больше букв.

                    Сравни, например, с питоном
                    class Petux(Bird):
                        def talk():
                           print("koo");
                    
                    petux = Petux()
                    petux.talk()


                    пых
                    class Petux extends Bird {
                        function talk() { 
                           print("koo");
                       }
                    }
                    $petux = new Petux();
                    $petux->talk();
                    Ответить
                    • Игра не по правилам. Напиши честно:
                      echo 'koo';
                      Ответить
                      • сохранит две скобки.
                        Сразу могу сказать что не нужно. Ненужны

                        1) слово function
                        2) слово extends
                        3) доллар
                        4) оператор new
                        5) стрелочка
                        Ответить
                        • Дуро́, я запостил то, что может заменить весь твой высер, а не только "print("koo");".
                          Вам, быдлу, насчёт ООП хорошо промыли черепицу.
                          Ответить
                          • Oh, go fuck some goat, you asshole.

                            This example has nothing to do with OOP, it is about how PHP is verbose without of any good reason.
                            Ответить
                        • Как питонисты без тегов "<?php", "?>" встраивают "HTML" в код? Мультистроками?
                          Ответить
                          • Читают "HTML" из отдельного файла.
                            Ответить
                            • Переведи на "Python":
                              <?php foreach ($huis as $hui): ?>
                                 <a href="#hui-<?php echo $hui->len; ?>">
                                    Hui
                                    Pizda 
                                 </a>
                              <?php end for each; ?>
                              Ответить
                              • Для программы из одного файла
                                for sosiska in ["A", "B", "CCC"]:
                                    print(f"""
                                   <a href="#sos-{sosiska.__len__()}">
                                      Bui
                                      Zvezda 
                                   </a> """)


                                Для программы из двух файлов
                                foo.html
                                {% for url in urls %}
                                  <a href="#url -{{url.len}}">
                                      Hui
                                      Pizda 
                                   </a>
                                {% endfor %}


                                foo.py
                                from jinja2 import Environment
                                print(Environment().get_template("foo.html").render(urls=urls))
                                Ответить
                                • А можно сделать в одном файле, но без f-строк?
                                  Ответить
                          • Тоже могут быть шаблоны с кодом, и, кстати, в них появляется кулючевое слово end у кунструкцый.
                            Ответить
                          • используют шаблонизатор
                            Ответить
                            • Ну, а "PHP" охуенен именно тем, что он уже сам по себе шаблонизатор, позволяющий при этом использовать всевозможные СУБД, взаимодействовать с протоколами передачи данных, и т.д.
                              Ответить
                              • > "PHP" охуенен именно тем, что он уже сам по себе шаблонизатор
                                Ответить
                            • Угу, в отдельном файле:
                              <div id="summary">
                                  <h1>Page not found <span>(404)</span></h1>
                                  <table class="meta">
                                    <tr>
                                      <th>Request Method:</th>
                                      <td>{{ request.META.REQUEST_METHOD }}</td>
                                    </tr>
                                    <tr>
                                      <th>Request URL:</th>
                                      <td>{{ request.build_absolute_uri }}</td>
                                    </tr>
                                    {% if raising_view_name %}
                                    <tr>
                                      <th>Raised by:</th>
                                      <td>{{ raising_view_name }}</td>
                                    </tr>
                                    {% endif %}
                                  </table>
                                </div>
                                <div id="info">
                                  {% if urlpatterns %}
                                    <p>
                                    Using the URLconf defined in <code>{{ urlconf }}</code>,
                                    Django tried these URL patterns, in this order:
                                    </p>
                                    <ol>
                                      {% for pattern in urlpatterns %}
                                        <li>
                                          {% for pat in pattern %}
                                              {{ pat.pattern }}
                                              {% if forloop.last and pat.name %}[name='{{ pat.name }}']{% endif %}
                                          {% endfor %}
                                        </li>
                                      {% endfor %}
                                    </ol>
                                    <p>
                                      {% if request_path %}
                                      The current path, <code>{{ request_path }}</code>,{% else %}
                                      The empty path{% endif %} didn't match any of these.
                                    </p>
                                  {% else %}
                                    <p>{{ reason }}</p>
                                  {% endif %}
                                </div>

                              Который должна прочитать какая-нибудь джанга. А в "PHP" шаблонизатор из коробки.
                              Ответить
                          • Открой для себя "джанго"
                            Ответить
                            • Кроме джанги существуют еще разные другие фреймворки (фласк например) и куча шаблонизаторов
                              Ответить

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