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

    +153

    1. 01
    2. 02
    3. 03
    4. 04
    5. 05
    6. 06
    7. 07
    8. 08
    9. 09
    10. 10
    11. 11
    12. 12
    <?php foreach ($category_1['children'] as $category_2) { ?>
            <?php if ($category_2['category_id'] == $category_id) { ?>
            <option value="<?php echo $category_2['category_id']; ?>" selected="selected">      <?php echo $category_2['name']; ?></option>
            <?php } else { ?>
            <option value="<?php echo $category_2['category_id']; ?>">      <?php echo $category_2['name']; ?></option>
            <?php } ?>
            <?php foreach ($category_2['children'] as $category_3) { ?>
            <?php if ($category_3['category_id'] == $category_id) { ?>
            <option value="<?php echo $category_3['category_id']; ?>" selected="selected">            <?php echo $category_3['name']; ?></option>
            <?php } else { ?>
            <option value="<?php echo $category_3['category_id']; ?>">            <?php echo $category_3['name']; ?></option>
            <?php } ?>

    Код вида поиска из известной модификации CMS Opencart - Maxystore.

    Запостил: bestaimer, 15 Мая 2014

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

    • ><?php } else { ?>
      Это что-то из разряда case прыгающего в середину цикла?
      Ответить
      • Когда парсер в php режиме - он разбирает php код, когда в html режиме - вставляет что-то в духе echo "контент". В принципе, подобным образом и жабостранички компилят и шарпостранички.

        Так что с control flow тут все нормально ;)
        <?php if (...) { ?>
            foo
        <?php } else { ?>
            bar
        <?php } ?>
        // В промежуточном представлении превратится во что-то подобное
        if (...) {
            echo "\n    foo\n";
        } else {
            echo "\n    bar\n";
        }
        P.S. Или я туплю, и там совсем не так все происходит?
        Ответить
        • Так то оно так, но в данном случае десять раз открывать закрывать <?php?> - очевидно говно ещё то.
          Ответить
          • > очевидно говно ещё то
            Я пояснял s-a--m'у, что это не undefined behavior, а законная конструкция.

            Ну а насчет говна - да, говно. Но если сам пых юзать как шаблонизатор, вариантов то особо и нет - либо через echo, либо как в топике.
            Ответить
            • А что, тот переход вовнутрь блока был УБ?
              Ответить
              • А там все зависит от инициализации переменных: если какая-то переменная из-за этого впрыгивания окажется неинициализированной, а потом поюзается - будет UB. Но компилятор обычно сам матерится на такое.
                Ответить
              • А вот человек пытается повторить то же на сперморешетке http://stackoverflow.com/questions/12901811/using-a-for-loop-inside-switch-case
                Ответить
    • показать все, что скрытоВъебал минус ублюдкам.
      Ответить
    • показать все, что скрытоХуй.
      Ответить

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