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

    +4

    1. 1
    <?php echo "$some_var"; ?>

    Запостил: 3_dar, 06 Октября 2015

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

    • > ?>
      Ну и говнооооооооо!
      Ответить
    • $amovar.
      Ответить
    • Мне кажется, что в байткоде это будет неотличимо от echo $some_var.
      Ответить
      • Оптимизирующий PHP-интерпретатор? Не в этой жизни.
        Ответить
        • > PHP-интерпретатор
          >в байткоде
          >>интерпретатор
          >>байткод
          Ответить
        • Оптимизатор есть, но не из коробки, а в расширениях, кэширующих байткод:
          http://xcache.lighttpd.net/browser/svn/trunk/mod_optimizer/xc_optimizer.c
          Ответить
      • Когда кажется, осенить себя крестным знамением надо!

        Шутки в сторону:
        <?php 
        function my_echo($s) { echo $s; }
        function my_print($s) { print($s); }
        function my_tags($s) { ?>$s<?php ; }
        function my_interpolation($s) { echo "$s"; }


        Выхлоп php_vld:
        function name:  my_echo
           2     0  >   RECV                                                     1
                 1      ECHO                                                     !0
                 2    > RETURN                                                   null

        ***
        function name:  my_print
           3     0  >   RECV                                                     1
                 1      PRINT                                            ~0      !0
                 2      FREE                                                     ~0
                 3    > RETURN                                                   null

        ***
        function name:  my_tags
           4     0  >   RECV                                                     1
                 1      ECHO                                                     '%24s'
                 2    > RETURN                                                   null

        ***
        function name:  my_interpolation
           5     0  >   RECV                                                     1
                 1      ADD_VAR                                          ~0      !0
                 2      ECHO                                                     ~0
                 3    > RETURN                                                   null


        P.S. my_tags — неправильный пример. Но «короткий» тег <?= ... ?> тоже компилируется в echo.
        Ответить
        • Больше ада:
          function my_printf($s) { printf($s); }
          function my_heredoc($s) { echo <<<PITUH
          $s
          PITUH
          ; }

          Выхлоп:
          function name:  my_printf
             6     0  >   RECV                                                     1
                   1      SEND_VAR                                                 !0
                   2      DO_FCALL                                      1          'printf'
                   3    > RETURN                                                   null

          ***
          function name:  my_heredoc
             7     0  >   RECV                                                     1
             8     1      ADD_VAR                                          ~0      !0
            10     2      ECHO                                                     ~0
                   3    > RETURN                                                   null
          Ответить
      • И на всякий случай (вдруг кому-то лень читать простыню) ответ: "$some_var" (sic, в кавычках) создаёт локальную переменную и копирует в неё значение $some_var.
        Ответить
        • Немного приврал: на самом деле выполняет конкатенацию с пустой строкой. Но в любом случае лишняя операция.
          Ответить

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