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

    0

    1. 1
    2. 2
    3. 3
    https://github.com/VKCOM/bot-example-php/blob/master/html/bot/bot.php
    
    В великом и недосягаемом "ВКонтакте" переменные в текст по-прежнему включают с помощью фигурных скобок.

    Запостил: COWuTEJIbTBOEuMAMKu, 14 Ноября 2017

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

    • никак нет:
      $attachments = array(
          'photo'.$photo['owner_id'].'_'.$photo['id'],
          'doc'.$doc['owner_id'].'_'.$doc['id'],
        );
      Ответить
    • там там же assoc array
      Ты уверен что так будет работать?
      $msg = "Привет, $user['first_name']!";

      зы: строковая интерполяция -- опасный инструмент, лучше ею не злоупотреблять.
      В руби вон можно целую программу в строке выполнить
      Ответить
      • В PHP тоже можно. Hint: use ``, Luke.

        http://php.net/manual/ru/language.operators.execution.php
        Ответить
        • нет, `` это другое. Это перлизм (шизм даже точнее) и такой оператор есть и в php и в ruby.
          `` это просто вызов "system".

          А в ruby можно
          foo = "I will create function: #{def idioto; puts 43; end; "created!" }"
          
          p foo # напечатает "I will create function: created"
          
          idioto # напечатает 43, по сути вызовет функцию созданную внутри строки!
          Ответить
          • А чтобы вызов idioto напечатал 43, перед этим нужно где-нибудь использовать значение foo или это определение выполняется в той же строчке, где инициализируется foo? Ну то есть "#{def idioto..." — это ленивое определение или энергичное?
            Ответить
          • И ещё интересно, что произойдёт, если внутри строки с интерполяцией использовать выражения с побочным эффектом (хотя бы ++i и i++). И можно ли ссылаться на саму строку?
            Ответить
            • Использовать можно
              $i = 0;
              
              foo = "I will create function: #{$i += 1}"
              
              p $i # напечатает 1


              А ссылаться нельзя, я думаю: сначала выполняется строка, затем она присваивается переменной
              Ответить

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