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

    +163

    1. 1
    <input type="submit" value="<?=lang('Send','Отправить')?>" />

    Говнокод или нет?

    Запостил: Morsik, 31 Мая 2010

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

    • Говно. Перевод должен храниться отдельно.
      Ответить
    • показать все, что скрытоговно.
      Думаю лучше было бы что-то около:
      <?=lang(LANG_TRANSLATE_SAND_BUTTON, LANG_RUSSIAN)?>
      где первый ключ что, а второй куда.
      Ответить
    • показать все, что скрытоГовно, потому что используются короткие теги <?=

      Ну и лучше конечно словари, оригиналы хранить можно на английском.
      Будет что-то типа <?php echo lang('Send', LANG_RUSSIAN) ?>
      Ответить
      • ты овца, короткие теги используются чтобы удобнее выводить переменные в html-коде.
        Ответить
        • ололо. шорт-теги поддерживаются не всеми хостингами и их использование официально не рекомендуется. а чем тебе там удобнее пользоваться - шерифа не волнует
          Ответить
          • Я говорю не про говносайтики а про полноценные онлайн сервисы, которые на виртуальных хостингах не размещаются. Да и при существующей конкуренции, хостинг с отключенной поддержкой шорт тегов хостингом трудно назвать. У всех нормальных хостов это On. И это не мне удобнее, а удобнее тому, кто будет разбираться в моем коде.
            Ответить
            • ладно, это все равно очередной холивар. даже по поводу удобства... <?php сразу бросается в глаза, что это PHP. Но, повторю, каждому - свое и это повод для холивара
              Ответить
              • Да о пыхе можно много спорить. Та же ситуация с выводом переменных в строку - существует много способов, но правильный только один:
                echo "test: {$var} ololo";
                Ответить
                • ммм... это откуда такие данные про правильность? С точки зрения скорости выполнения echo sprintf скорее всего быстрее. и вывод трех отдельных echo с буферизацией думаю тоже.

                  Можно пруфлинк?
                  Ответить
                  • http://tinyurl.com/amy5ft вот тебе пруфлинк. Вообще то это по стандарту Зенда.

                    p.s. а чем echo sprintf лучше простого printf? xD
                    Ответить
                    • ага понятно... оперируй :P

                      ps а ничем наверное, хз че я именно так написал)
                      Ответить
                      • Короче, я реально отвечаю - юзать {$var} реально пизже!
                        Ответить
                        • ок ок, спокойно, все в порядке, дяди в белых халатах уже выехали
                          Ответить
                          • ты школьница
                            Ответить
                            • охщит, похоже дело серьезней, чем я думал =)

                              я спать ушел, надеюсь санитары успеют до необратимых последствий
                              Ответить
    • Можно ещё закосить под gettext:
      <?php echo l('Отправить'); ?>

      На этапе разработки l() пусть просто возвращает строку, поданную на вход. Когда всё сделаете, напишите скрипт, который пропарсит весь проект, выдерет все строчки, подаваемые на l(), и сведёт их в файл. Опираясь на этот файл, заготовите варианты перевода и модифицируете l(), чтобы она их учитывала в зависимости от настроек языка.
      А если есть возможность, то можно не косить под gettext, а его и использовать. http://php.net/gettext
      Ответить
      • Да, это конечно самый лучший способ. Например symfony вообще сама такое предоставляет)
        Ответить
    • ну прям <?= ?> jsp стиль!

      а вообще хорошо когда так: <?php $this->putText('send'); ?> то бишь уже применить ООП
      Ответить
      • echo пропустили
        Ответить
        • нет, не пропустили, у меня это значит "вывести строку, переведенную на текущий язык и экранировать спецсимволы, если перевода нет - вывести сам текст в нормальном режиме, или в дебуге упперкейсом в квадратных скобках" - но эт неважно
          Ответить
          • смысла в этом никакого, кроме того, как лишний раз подрочить на ооп
            Ответить
            • как раз таки как оказалось очень полезная штуковинка, да.
              Ответить
    • Проще когда
      <input type="submit" value="{$label.send}" />
      Ответить
    • Собственно а почему бы не echo('<input type="submit" value="{$lang["send"]}" />'); ?
      Ответить
      • это точно bad practice, в идеале нам нужно видеть html-страницу с вкраплениями php кода
        Ответить
        • вCRAPлениями.

          Знаете, если человек не понимает почему представление надо выности в отдельные файлы -- его надо убить. Он PHPшник, и ничто ему не поможет
          Ответить
    • Шаблон:
      <input type="submit" value="%1$s" />

      Обработчик:
      $result = sprintf($template,multilang_function('send','RU'));
      Ответить
      • На шаблоне в одну строчку это нормально. Но я сочувствую Вам, если так начнете делать на полноценном шаблоне :)
        Ответить
        • Да. Согласен. Я использую такие шаблоны для однострочных <tr><td>...</td></tr>.
          Ответить
    • Ну, если это делается один раз под конкретного заказчика, где никаких заморочек не предвидится, как и денег за дополнительное красивое, но более трудоёмкое решение - почему бы и нет?
      Ответить

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